public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.Statement st2x = connectDB.createStatement();

            java.sql.ResultSet rset2x =
                st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
            while (rset2x.next()) {
              ks = rset2x.getObject(1).toString();
            }
            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Price List - Page: "),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(5);

            int headerwidths[] = {20, 50, 30, 30, 30};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            // table.setHeaderRows(2);

            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.LEFT | Rectangle.RIGHT);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

            Phrase phrase = new Phrase(" ");
            //  table.addCell(phrase);

            try {
              table.getDefaultCell().setColspan(5);
              phrase = new Phrase("Departmental Price List ");
              table.addCell(phrase);
              table.getDefaultCell().setColspan(4);
              java.sql.Statement st2 = connectDB.createStatement();

              // java.sql.ResultSet rset = st.executeQuery("select code,upper(service_type) as
              // description,rate from pricelist WHERE main_service ilike '"+bank+"%' order by
              // service_type");// tn,debit_note db WHERE tn.policy_no != '' and tn.policy_no =
              // db.policy_no GROUP BY tn.policy_no,db.policy_class");

              System.out.println("Printing Price List for GL/CODE : [" + bank + "]");

              java.sql.ResultSet rset3 =
                  st2.executeQuery(
                      "SELECT DISTINCT activity FROM pb_activity WHERE code ILIKE  '" + bank + "'");

              while (rset3.next()) {
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                phrase =
                    new Phrase(
                        rset3.getString(1).toUpperCase()
                            + " - "
                            + bank
                            + " Price List as at : "
                            + date,
                        pFontHeader);

                table.addCell(phrase);
              }
              //  Phrase phrase = new Phrase(bank +"    Balance Report"    +"  as at : "  +endDate,
              // pFontHeader);

              //  table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase = new Phrase("Printed on : " + date, pFontHeader);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("CODE", pFontHeader);
              table.addCell(phrase);

              //  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("DESCRIPTION", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              // phrase = new Phrase("",pFontHeader);
              // table.addCell(phrase);

              phrase = new Phrase("Norminal Rate (E.A) " + ks, pFontHeader);
              table.addCell(phrase);

              phrase = new Phrase("Special Rate (PRIVATE) " + ks, pFontHeader);
              table.addCell(phrase);

              phrase = new Phrase("NON E.A " + ks, pFontHeader);
              table.addCell(phrase);

              // phrase = new Phrase("Credit KShs.",pFontHeader);
              // table.addCell(phrase);

              // table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
              // table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              double osBalance = 0.00;

              //  java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              java.sql.Statement st = connectDB.createStatement();

              //  java.sql.Statement st2 = connectDB.createStatement();

              // java.sql.ResultSet rset = st.executeQuery("select code,upper(service_type) as
              // description,rate from pricelist WHERE main_service ilike '"+bank+"%' order by
              // service_type");// tn,debit_note db WHERE tn.policy_no != '' and tn.policy_no =
              // db.policy_no GROUP BY tn.policy_no,db.policy_class");

              System.out.println("Printing Price List for GL/CODE : [" + bank + "]");

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "SELECT code, upper(service_type), rate, anaesthetist_rate,other_prices FROM pb_operating_parameters WHERE gl_account ilike  '"
                          + bank
                          + "' order by service_type");

              while (rset.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader1);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                //  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(2), "-"), pFontHeader1);

                table.addCell(phrase);

                //  table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(3)),
                        pFontHeader);
                //  osBalance = osBalance + rset1.getDouble(6);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(4)),
                        pFontHeader);
                //  osBalance = osBalance + rset1.getDouble(6);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(5)),
                        pFontHeader);
                //  osBalance = osBalance + rset1.getDouble(6);
                table.addCell(phrase);
              }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document(PageSize.A4.rotate());

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          try {

            java.lang.Class.forName("org.postgresql.Driver");

          } catch (java.lang.ClassNotFoundException cnfExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), cnfExec.getMessage());
          }

          String compName = null;
          String date = null;
          try {

            //   java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Orders - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(7);

            int headerwidths[] = {12, 10, 30, 30, 8, 8, 12};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(5);

            Phrase phrase = new Phrase("Orders list as at: " + endDate, pFontHeader);

            table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
            table.getDefaultCell().setColspan(2);
            phrase = new Phrase("Printed on : " + date, pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
            phrase = new Phrase("Order No", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Date Due", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Supplier", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Item", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Units", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Qty", pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
            phrase = new Phrase("Net Value", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.lang.Object[] listofAct = this.getListofActivities();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();

              for (int i = 0; i < listofAct.length; i++) {
                int w = 0;
                java.sql.ResultSet rset3 =
                    st3.executeQuery(
                        "SELECT DISTINCT order_no,date_due AS date,supplier from st_orders WHERE date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' AND order_no = '"
                            + listofAct[i].toString()
                            + "' ORDER BY date");

                java.sql.ResultSet rset =
                    st.executeQuery(
                        "SELECT item,units,quantity,net_value from st_orders WHERE date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' AND order_no = '"
                            + listofAct[i].toString()
                            + "' ORDER BY item");
                java.sql.ResultSet rsetTotals =
                    st2.executeQuery(
                        "SELECT SUM(net_value) from st_orders WHERE date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "'  AND order_no = '"
                            + listofAct[i].toString()
                            + "'");

                while (rset3.next()) {
                  while (rset.next()) {
                    w = w + 1;

                    if (w == 1) {
                      table.getDefaultCell().setColspan(1);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset3.getObject(2).toString(), pFontHeader1);

                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset3.getObject(3).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(2).toString(), pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(3)),
                              pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(4)),
                              pFontHeader1);
                      table.addCell(phrase);

                    } else {
                      table.getDefaultCell().setColspan(1);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);

                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(2).toString(), pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(3)),
                              pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(4)),
                              pFontHeader1);
                      table.addCell(phrase);
                    }
                  }
                }
                // table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                // table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                while (rsetTotals.next()) {

                  table.getDefaultCell().setColspan(5);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  phrase = new Phrase("Total", pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase = new Phrase((""), pFontHeader);

                  table.addCell(phrase);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rsetTotals.getString(1)),
                          pFontHeader);

                  table.addCell(phrase);
                }
              }
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      //            com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          double osBalancebf = 0.00;
          double osBalance = 0.00;
          double osBalanceb1 = 0.00;

          String compName = null;
          String date = null;

          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            //  java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(7);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) table1.getDefaultCell().setColspan(7);

              table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader1);
              table1.addCell(phrase);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Debtors Statement - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

            int headerwidths[] = {10, 30, 15, 15, 15, 20};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            Phrase phrase = new Phrase();
            //  table.getDefaultCell().setColspan(8);

            table.getDefaultCell().setColspan(4);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);

              phrase =
                  new Phrase(
                      Debtor
                          + " Period : "
                          + dateFormat.format(endDate11)
                          + " - "
                          + dateFormat.format(endDate1),
                      pFontHeader1);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }
            // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
            // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
            // table.addCell(phrase);

            table.getDefaultCell().setColspan(2);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
            phrase = new Phrase("Date " + datenowSql, pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(3);
            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);

            phrase = new Phrase("Acc No", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Scheme", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
            phrase = new Phrase("Debit", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Credit", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Balance ", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Running Total", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            // table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();

              java.sql.Statement st2 = connectDB.createStatement();

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select db.account_no,db.payee,sum(db.debit),sum(credit),SUM(db.balance) from ac_debtors db WHERE db.date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' AND db.dealer ILIKE '"
                          + Debtor
                          + "' GROUP BY db.payee,db.account_no ORDER BY db.payee");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      "select SUM(db.balance) from ac_debtors db WHERE db.date < '"
                          + beginDate
                          + "' AND db.dealer ILIKE '"
                          + Debtor
                          + "' GROUP BY db.account_no");

              while (rset1.next()) {
                bfwd = rset1.getDouble(1);
                bfcd = bfcd + rset1.getDouble(1);
              }
              while (rset.next()) {

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(3)),
                        pFontHeader1);
                osBalance = osBalance + rset.getDouble(3);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(4)),
                        pFontHeader1);
                osBalanceb1 = osBalanceb1 + rset.getDouble(4);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(5)),
                        pFontHeader);
                osBalancebf = osBalancebf + rset.getDouble(5);
                // osBalancebf = osBalance1;
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalancebf)),
                        pFontHeader);

                table.addCell(phrase);
              }
              // }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //   while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance)),
                      pFontHeader);

              table.addCell(phrase);

              // table.getDefaultCell().setColspan(2);

              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceb1)),
                      pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalancebf)),
                      pFontHeader);

              table.addCell(phrase);

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          //  wait_for_Pdf2Show = rt.exec("kghostview "+tempFile+"");

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class RevenuePriceListPdf implements java.lang.Runnable {

  public static java.sql.Connection connectDB = null;
  java.lang.String bank = null;
  java.util.Date beginDate = null;
  com.afrisoftech.lib.DBObject dbObject;
  java.util.Date endDate = null;
  public java.lang.String dbUserName = null;
  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;
  String ks;
  boolean threadCheck = true;
  java.lang.Thread threadSample;
  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();
  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();
  java.lang.Process prThread;

  public void RevenuePriceListPdf(
      java.sql.Connection connDb,
      java.util.Date begindate,
      java.util.Date endate,
      java.lang.String combox) {
    // public void StoresBalPdf(java.sql.Connection connDb) {

    dbObject = new com.afrisoftech.lib.DBObject();

    bank = combox;

    connectDB = connDb;

    // beginDate = begindate;

    // endDate = endate;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {
    //	new CashBookListPdf().CashBookListPdf();
  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(200);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.Statement st2x = connectDB.createStatement();

            java.sql.ResultSet rset2x =
                st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
            while (rset2x.next()) {
              ks = rset2x.getObject(1).toString();
            }
            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Price List - Page: "),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(5);

            int headerwidths[] = {20, 50, 30, 30, 30};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            // table.setHeaderRows(2);

            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.LEFT | Rectangle.RIGHT);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

            Phrase phrase = new Phrase(" ");
            //  table.addCell(phrase);

            try {
              table.getDefaultCell().setColspan(5);
              phrase = new Phrase("Departmental Price List ");
              table.addCell(phrase);
              table.getDefaultCell().setColspan(4);
              java.sql.Statement st2 = connectDB.createStatement();

              // java.sql.ResultSet rset = st.executeQuery("select code,upper(service_type) as
              // description,rate from pricelist WHERE main_service ilike '"+bank+"%' order by
              // service_type");// tn,debit_note db WHERE tn.policy_no != '' and tn.policy_no =
              // db.policy_no GROUP BY tn.policy_no,db.policy_class");

              System.out.println("Printing Price List for GL/CODE : [" + bank + "]");

              java.sql.ResultSet rset3 =
                  st2.executeQuery(
                      "SELECT DISTINCT activity FROM pb_activity WHERE code ILIKE  '" + bank + "'");

              while (rset3.next()) {
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                phrase =
                    new Phrase(
                        rset3.getString(1).toUpperCase()
                            + " - "
                            + bank
                            + " Price List as at : "
                            + date,
                        pFontHeader);

                table.addCell(phrase);
              }
              //  Phrase phrase = new Phrase(bank +"    Balance Report"    +"  as at : "  +endDate,
              // pFontHeader);

              //  table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase = new Phrase("Printed on : " + date, pFontHeader);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("CODE", pFontHeader);
              table.addCell(phrase);

              //  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("DESCRIPTION", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              // phrase = new Phrase("",pFontHeader);
              // table.addCell(phrase);

              phrase = new Phrase("Norminal Rate (E.A) " + ks, pFontHeader);
              table.addCell(phrase);

              phrase = new Phrase("Special Rate (PRIVATE) " + ks, pFontHeader);
              table.addCell(phrase);

              phrase = new Phrase("NON E.A " + ks, pFontHeader);
              table.addCell(phrase);

              // phrase = new Phrase("Credit KShs.",pFontHeader);
              // table.addCell(phrase);

              // table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
              // table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              double osBalance = 0.00;

              //  java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              java.sql.Statement st = connectDB.createStatement();

              //  java.sql.Statement st2 = connectDB.createStatement();

              // java.sql.ResultSet rset = st.executeQuery("select code,upper(service_type) as
              // description,rate from pricelist WHERE main_service ilike '"+bank+"%' order by
              // service_type");// tn,debit_note db WHERE tn.policy_no != '' and tn.policy_no =
              // db.policy_no GROUP BY tn.policy_no,db.policy_class");

              System.out.println("Printing Price List for GL/CODE : [" + bank + "]");

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "SELECT code, upper(service_type), rate, anaesthetist_rate,other_prices FROM pb_operating_parameters WHERE gl_account ilike  '"
                          + bank
                          + "' order by service_type");

              while (rset.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader1);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                //  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(2), "-"), pFontHeader1);

                table.addCell(phrase);

                //  table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(3)),
                        pFontHeader);
                //  osBalance = osBalance + rset1.getDouble(6);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(4)),
                        pFontHeader);
                //  osBalance = osBalance + rset1.getDouble(6);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(5)),
                        pFontHeader);
                //  osBalance = osBalance + rset1.getDouble(6);
                table.addCell(phrase);
              }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
}
  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          try {

            java.lang.Class.forName("org.postgresql.Driver");

          } catch (java.lang.ClassNotFoundException cnfExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), cnfExec.getMessage());
          }

          String compName = null;
          String date = null;
          try {

            //   java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) compName = rset2.getObject(1).toString();

            while (rset4.next()) date = rset4.getObject(1).toString();

            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName + "", pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Journal List - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

            int headerwidths[] = {10, 10, 8, 25, 15, 15};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(6);

            Phrase phrase = new Phrase("", pFontHeader);
            double osBalance = 0;
            double osBalance1 = 0;
            //  try {
            //      java.text.DateFormat dateFormat =
            // java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM);//MEDIUM);
            //

            //                            java.util.Date endDate1 =
            // dateFormat.parse(endDate.toLocaleString());//dateInstance.toLocaleString());
            //                            java.util.Date endDate11 =
            // dateFormat.parse(beginDate.toLocaleString());//dateInstance.toLocaleString());

            //                            System.out.println(""+endDate1);
            //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
            // pFontHeader);

            //  table.addCell(phrase);
            table.getDefaultCell().setColspan(4);

            phrase = new Phrase("Journal  No : " + Jno, pFontHeader);

            table.addCell(phrase);
            table.getDefaultCell().setColspan(2);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("Printed On  : " + date, pFontHeader);

            table.addCell(phrase);
            // } catch(java.text.ParseException psExec) {

            //     javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
            // psExec.getMessage());
            //
            //  }
            // Phrase phrase = new Phrase("Patients List As At:" +endDate, pFontHeader);

            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);

            phrase = new Phrase("Date", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Activity Code", pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("journal No.", pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("Description", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("Debit KShs", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Credit KShs", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              java.sql.Statement st = connectDB.createStatement();

              java.sql.Statement st2 = connectDB.createStatement();

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select input_date,activity_code ,journal_no,description,debit,credit from ac_journal WHERE journal_no BETWEEN '"
                          + Jno
                          + "' AND '"
                          + Jno1
                          + "' ORDER BY journal_no"); // tn,debit_note db WHERE tn.policy_no != ''
                                                      // and tn.policy_no = db.policy_no GROUP BY
                                                      // tn.policy_no,db.policy_class");

              while (rset.next()) {

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getObject(2).toString(), pFontHeader1);

                table.addCell(phrase);
                phrase = new Phrase(rset.getObject(3).toString(), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getString(4).toString(), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(5)),
                        pFontHeader1);
                osBalance = osBalance + rset.getDouble(5);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(6)),
                        pFontHeader1);
                osBalance1 = osBalance1 + rset.getDouble(6);
                table.addCell(phrase);
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              table.getDefaultCell().setColspan(4);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance)),
                      pFontHeader1);

              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance1)),
                      pFontHeader1);

              table.addCell(phrase);

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document(PageSize.A4.rotate());
      double osBalance1 = 0.00;
      double osBalance = 0.00;
      double current = 0.00;
      double osBalancebf = 0.00;
      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(7);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st2x = connectDB.createStatement();

              java.sql.ResultSet rset2x =
                  st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
              while (rset2x.next()) {
                ks = rset2x.getObject(1).toString();
              }
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) {
                table1.getDefaultCell().setColspan(7);

                table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader11);
                table1.addCell(phrase);
              }

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          //  } catch(java.io.FileNotFoundException fnfExec) {

          //  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
          // fnfExec.getMessage());

          /// }
          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(9);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {12, 10, 28, 11, 14, 12, 14, 14, 15};

            table.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            table.setHeaderRows(8);
            //  }
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(9);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              double Debit = 0.00;
              double Credit = 0.00;
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.Statement st41 = connectDB.createStatement();
              java.sql.Statement st5 = connectDB.createStatement();
              java.sql.Statement st22D = connectDB.createStatement();
              java.sql.ResultSet rset3 =
                  st3.executeQuery(
                      "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
              java.sql.ResultSet rset4 =
                  st4.executeQuery(
                      "select scheme_name,account_no,tel_main,address from ac_schemes where account_no = '"
                          + memNo
                          + "'");
              java.sql.ResultSet rset41 =
                  st41.executeQuery(
                      "select payer_name from ac_schemes where account_no = '" + memNo + "'");
              //      java.sql.ResultSet rset1 = st1.executeQuery("select date,admission_no||'
              // '||cheque_no, upper(item),invoice_no ||'
              // '||receipt_no,debit,credit,credit_bal,balance from ac_debtors where account_no = '"
              // + memNo + "' AND date::date BETWEEN '" + beginDate + "' AND '" + endDate + "' group
              // by 1, 2, 3order by date,invoice_no");// UNION select
              // pd.date::date,initcap(pd.scheme_staff_no), (sh.first_name||' '||sh.second_name||'
              // '||sh.last_name) as name,pd.reference,sum(pd.credit),pd.patient_no from
              // hp_patient_card pd,hp_inpatient_register sh where pd.patient_no = sh.patient_no and
              // pd.isurer = '"+memNo+"' AND pd.date::date BETWEEN '"+beginDate+"' AND '"+endDate+"'
              // and pd.credit > 0 group by pd.date::date,pd.scheme_staff_no,
              // name,pd.reference,pd.invoice_no,pd.patient_no order by pd.invoice_no");
              java.sql.ResultSet rsetTotals2 =
                  st22.executeQuery(
                      "select sum(debit - credit) from ac_debtors where account_no = '"
                          + memNo
                          + "' AND date::date < '"
                          + beginDate
                          + "'");
              java.sql.ResultSet rsetTotals =
                  st2.executeQuery(
                      "select sum(debit),sum(credit) from ac_debtors where account_no = '"
                          + memNo
                          + "' AND date::date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "'");

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP | Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(9);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("Statement of Account", pFontHeader11);
              table.addCell(phrase);

              while (rset4.next()) {
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                table.getDefaultCell().setColspan(9);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset4.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);

                while (rset41.next()) {
                  table.getDefaultCell().setColspan(9);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset41.getString(1), pFontHeader1);
                  table.addCell(phrase);
                }
                table.getDefaultCell().setColspan(9);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase =
                    new Phrase(
                        "Account No : " + rset4.getObject(2).toString().toUpperCase(),
                        pFontHeader1);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        dbObject.getDBObject("Tel : " + rset4.getObject(3), "-"), pFontHeader1);
                table.addCell(phrase);
                phrase = new Phrase(dbObject.getDBObject(rset4.getObject(4), "-"), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(6);
              }
              try {
                java.text.DateFormat dateFormat =
                    java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

                java.util.Date endDate1 =
                    dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
                java.util.Date endDate11 =
                    dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

                System.out.println("" + endDate1);
                //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
                // pFontHeader);

                //  table.addCell(phrase);

                phrase =
                    new Phrase(
                        "Period : "
                            + dateFormat.format(endDate11)
                            + " - "
                            + dateFormat.format(endDate1),
                        pFontHeader1);

                table.addCell(phrase);
              } catch (java.text.ParseException psExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), psExec.getMessage());
              }
              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
              // table.addCell(phrase);

              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Date " + datenowSql, pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP);
              table.getDefaultCell().setColspan(1);
              // phrase = new Phrase("Date", pFontHeader1);
              // table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Staff No.", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase(" Staff Name", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Debit Bal. ", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Running Amt. " + ks, pFontHeader1);
              table.addCell(phrase);

              while (rsetTotals2.next()) {
                table.getDefaultCell().setColspan(5);

                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("BAL/BF", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                table.getDefaultCell().setColspan(4);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rsetTotals2.getString(1)),
                        pFontHeader1);
                osBalancebf = osBalancebf + rsetTotals2.getDouble(1);
                table.addCell(phrase);
              }
              for (int i = 0; i < listofStaffNos.length; i++) {
                java.sql.ResultSet rset1 =
                    st1.executeQuery(
                        "select admission_no, upper(item), sum(debit - credit) from ac_debtors where account_no = '"
                            + memNo
                            + "' and admission_no = '"
                            + listofStaffNos[i]
                            + "' AND date::date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' GROUP BY 1, 2");
                while (rset1.next()) {
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(6);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  // phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"),
                  // pFontHeader);

                  // table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  // phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"),
                  // pFontHeader);

                  // table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  // phrase = new Phrase(new
                  // com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(5)),
                  // pFontHeader);
                  // Debit = Debit + rset1.getDouble(5);
                  // table.addCell(phrase);
                  // phrase = new Phrase(new
                  // com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(6)),
                  // pFontHeader);
                  // Credit = Credit + rset1.getDouble(6);
                  // table.addCell(phrase);

                  // phrase = new Phrase(new
                  // com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(7)),
                  // pFontHeader);
                  // osBalance1 = osBalance1 + rset1.getDouble(6);
                  // table.addCell(phrase);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset1.getString(3)),
                          pFontHeader);
                  osBalancebf = osBalancebf + rset1.getDouble(3);
                  // osBalancebf = osBalance1;
                  table.addCell(phrase);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalancebf - osBalance1)),
                          pFontHeader);

                  table.addCell(phrase);
                }
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(4);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalancebf - osBalance1)),
                      pFontHeader);

              table.addCell(phrase);

              // phrase = new Phrase(" ");

              //     }
              try {

                java.sql.Statement st31 = connectDB.createStatement();
                // java.sql.Statement st4 = connectDB.createStatement();
                java.sql.ResultSet rset2 = st31.executeQuery("select name from pb_notice");

                // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from
                // pb_hospitalprofile");
                //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                while (rset2.next()) {
                  Messg = rset2.getString(1);
                }
                com.lowagie.text.HeaderFooter footer =
                    new com.lowagie.text.HeaderFooter(
                        new Phrase("" + Messg + ""),
                        false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                // Font.BOLDITALIC,java.awt.Color.blue)));

                //  com.lowagie.text.HeaderFooter headerFoter = new
                // com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);//
                // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                // Font.BOLDITALIC,java.awt.Color.blue)));
                //  headerFoter.ALIGN_CENTER;
                //  headerFoter.setRight(5);
                docPdf.setFooter(footer);

              } catch (java.sql.SQLException SqlExec) {

                SqlExec.printStackTrace();
                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), SqlExec.getMessage());
              }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              SqlExec.printStackTrace();
              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }  // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("xpdf " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf() {
    java.sql.ResultSet rsetTotals1 = null;

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) compName = rset2.getObject(1).toString();

            while (rset4.next()) date = rset4.getObject(1).toString();

            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Un Finalised Invoices List - Page: ", pFontHeader1),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          double balance = 0.00;

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(4);

            int headerwidths[] = {15, 30, 25, 15};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(2);

            Phrase phrase =
                new Phrase(
                    "In Patient Unfinalised Inv : ",
                    com.lowagie.text.FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10));

            table.addCell(phrase);

            table.getDefaultCell().setColspan(2);

            phrase =
                new Phrase(
                    "Printed On : " + date,
                    com.lowagie.text.FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10));

            table.addCell(phrase);
            table.getDefaultCell().setColspan(1);

            // phrase = new Phrase("Name", pFontHeader);

            // table.addCell(phrase);

            phrase = new Phrase("Date", pFontHeader);

            table.addCell(phrase);

            phrase = new Phrase("No.", pFontHeader);

            table.addCell(phrase);

            phrase = new Phrase("Name", pFontHeader);

            table.addCell(phrase);

            phrase = new Phrase("Amount", pFontHeader);

            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              // java.lang.Object[] listofAct = this.getListofActivities();
              java.lang.Object[] listofAct1 = this.getListofActivities1();

              java.sql.Statement st21 = connectDB.createStatement();

              //  java.sql.ResultSet rsetTotals = st21.executeQuery("SELECT sum(amount) from
              // op_unfinalised_inv  where trans_date BETWEEN '"+beginDate+"' AND '"+endDate+"'");

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              //  System.out.println(listofAct.length);
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st22 = connectDB.createStatement();

              for (int k = 0; k < listofAct1.length; k++) {
                java.sql.ResultSet rset1 =
                    st2.executeQuery(
                        "SELECT patient_no,sum(debit-credit) from hp_patient_card WHERE patient_no ILIKE '"
                            + listofAct1[k].toString()
                            + "%' and invoice_no NOT iLike 'O%' OR invoice_no NOT iLike 'I%' AND date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' group by patient_no");
                java.sql.ResultSet rset2 =
                    st22.executeQuery(
                        "SELECT patient_name from hp_admission WHERE patient_no ILIKE '"
                            + listofAct1[k].toString()
                            + "%'");

                /*    table.getDefaultCell().setColspan(1);
                   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                   phrase = new Phrase(" ",pFontHeader);
                   table.addCell(phrase);
                   table.getDefaultCell().setColspan(3);
                   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  // phrase = new Phrase(listofAct1[k].toString(),pFontHeader);
                 //  table.addCell(phrase);

                   phrase = new Phrase("",pFontHeader);
                   table.addCell(phrase);
                */
                while (rset1.next()) {
                  while (rset2.next()) {
                    table.getDefaultCell().setColspan(1);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(" ", pFontNum);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(rset1.getObject(1).toString(), pFontNum);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(rset2.getString(1), pFontNum);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset1.getString(2)),
                            pFontHeader1);
                    table.addCell(phrase);
                    balance = balance + rset1.getDouble(2);
                  }
                }
              }
              // while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              //  phrase = new Phrase(new
              // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(1)),
              // pFontHeader);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(balance)),
                      pFontHeader);

              table.addCell(phrase);
              //  }

              // }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      double osBalanceAmt = 0.00;
      double osBalanceQty = 0.00;
      double osBalanceQtybf = 0.00;
      double osBalanceAmtbf = 0.00;
      double ClosingQtyBalance = 0.00;
      double ClosingAmtBalance = 0.00;
      double osBalanceQty1 = 0.00;
      double osBalanceQty13 = 0.00;
      double osBalanceQty14 = 0.00;
      double osBalanceAmt1 = 0.00;
      double osBalanceAmt12 = 0.00;
      double current = 0.00;

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          /*  try {


                  java.sql.Statement st3 = connectDB.createStatement();
                  java.sql.Statement st4 = connectDB.createStatement();
                    // java.sql.ResultSet rset2 = st3.executeQuery("select name from pb_notice");

                  java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
               //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                  while(rset2.next())
                      Messg = rset2.getObject(1).toString();



                //  while(rset4.next())
                  //    date = rset4.getObject(1).toString();

                 // com.lowagie.textHeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                    headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
                //  headerFoter.ALIGN_CENTER;
                   headerFoter.setRight(5);


              } catch(java.sql.SQLException SqlExec) {

                  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

              }

          */
          /*
           try {


                java.sql.Statement st3 = connectDB.createStatement();
                java.sql.Statement st4 = connectDB.createStatement();
                   java.sql.ResultSet rset2 = st3.executeQuery("select name from pb_notice");

               // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
             //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                while(rset2.next())
                    Messg = rset2.getObject(1).toString();



              //  while(rset4.next())
                //    date = rset4.getObject(1).toString();

                com.lowagie.text.HeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
              //  headerFoter.ALIGN_CENTER;
               //  headerFoter.setRight(5);
                docPdf.setFooter(footer);




            } catch(java.sql.SQLException SqlExec) {

                javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

            }
          */
          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(7);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) table1.getDefaultCell().setColspan(7);

              table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader11);
              table1.addCell(phrase);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          //  } catch(java.io.FileNotFoundException fnfExec) {

          //  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
          // fnfExec.getMessage());

          /// }
          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(5);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {10, 40, 15, 15, 20};

            table.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            table.setHeaderRows(3);
            //  }
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(5);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st111 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st1q = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.Statement st41 = connectDB.createStatement();
              java.sql.Statement st5 = connectDB.createStatement();
              java.sql.ResultSet rset3 =
                  st3.executeQuery(
                      "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      "select '-' as sno, item,sum(qty)  ,sum(purchases),sum(sales),case when sum(sales) > 0 then sum(sales)*-1 else sum(purchases) end as balance  from drug_movt where date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' and qty > 0 group by item order by item"); // UNION ALL SELECT
              // trans_date,store_name,user_name,issuing,total from st_sub_stores where (sub_store =
              // 'Pharmacy' OR sub_store = 'IP Pharmacy') and item ilike '"+memNo+"' AND trans_date
              // BETWEEN '"+beginDate+"' AND '"+endDate+"'");
              java.sql.ResultSet rset11 =
                  st11.executeQuery(
                      "select sum(purchases),sum(sales) from drug_movt"); // UNION ALL SELECT
              // trans_date,store_name,user_name,issuing,total from st_sub_stores where (sub_store =
              // 'Pharmacy' OR sub_store = 'IP Pharmacy') and item ilike '"+memNo+"' AND trans_date
              // BETWEEN '"+beginDate+"' AND '"+endDate+"'");
              // java.sql.ResultSet rset111 = st111.executeQuery("select sum(issuing),sum(amount)
              // from st_sub_stores where item ilike '"+memNo1+"' and sub_store ilike '"+memNo+"%'
              // AND date BETWEEN '"+beginDate+"' AND '"+endDate+"'");// UNION ALL SELECT
              // trans_date,store_name,user_name,issuing,total from st_sub_stores where (sub_store =
              // 'Pharmacy' OR sub_store = 'IP Pharmacy') and item ilike '"+memNo+"' AND trans_date
              // BETWEEN '"+beginDate+"' AND '"+endDate+"'");
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP | Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(5);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(" ", pFontHeader11);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(5);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase =
                  new Phrase(
                      "Drug Movement(Supplies Vs Sales) for all stockables items", pFontHeader11);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);

              try {
                java.text.DateFormat dateFormat =
                    java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

                java.util.Date endDate1 =
                    dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
                java.util.Date endDate11 =
                    dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

                System.out.println("" + endDate1);
                //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
                // pFontHeader);

                //  table.addCell(phrase);

                phrase =
                    new Phrase(
                        "Period : "
                            + dateFormat.format(endDate11)
                            + " - "
                            + dateFormat.format(endDate1),
                        pFontHeader1);

                table.addCell(phrase);
              } catch (java.text.ParseException psExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), psExec.getMessage());
              }
              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
              // table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Date " + datenowSql, pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("SNo.", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Item", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Qty", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Purchases.", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Sales", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              // table
              while (rset1.next()) {
                seq = seq + 1;
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("" + seq + ".", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader);
                osBalanceQty13 = osBalanceQty13 + rset1.getDouble(3);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(4)),
                        pFontHeader);
                osBalanceQty1 = osBalanceQty1 + rset1.getDouble(4);
                table.addCell(phrase);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(5), "0"), pFontHeader);
                osBalanceQty14 = osBalanceQty14 + rset1.getDouble(5);
                table.addCell(phrase);
                /*

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(6)),pFontHeader);
                osBalanceAmt1 = osBalanceAmt1 + rset1.getDouble(5);
                 osBalanceAmt12 = osBalanceAmt12 + rset1.getDouble(6);
                table.addCell(phrase);
                */
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("TOTAL", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceQty13)),
                      pFontHeader);

              table.addCell(phrase);

              // phrase = new Phrase(" ");

              // table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceQty1)),
                      pFontHeader);

              // phrase = new Phrase(" ",pFontHeader);
              // phrase = new Phrase(" ",pFontHeader);

              table.addCell(phrase);

              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceQty14)),
                      pFontHeader);

              // phrase = new Phrase(" ",pFontHeader);
              // phrase = new Phrase(" ",pFontHeader);

              table.addCell(phrase);
              /*
                table.getDefaultCell().setColspan(3);

                 table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                 phrase = new Phrase("Totals", pFontHeader);

                 table.addCell(phrase);

                 table.getDefaultCell().setColspan(2);

                 table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              */
              while (rset11.next()) {
                /*
                // phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf((osBalanceQtybf + osBalanceQty) - osBalanceQty1)),pFontHeader);
                //  phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(closingBal+osBalanceQty)),pFontHeader);
                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset11.getString(1)),pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset11.getString(2)),pFontHeader);

                //  phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf((closingBal+osBalanceQty)*buyingPrice)),pFontHeader);

                table.addCell(phrase);
                */
              }
              /*
                                   try {


                  java.sql.Statement st31 = connectDB.createStatement();
                 // java.sql.Statement st4 = connectDB.createStatement();
                     java.sql.ResultSet rset2 = st31.executeQuery("select name from pb_notice");

                 // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
               //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                  while(rset2.next())
                      Messg = rset2.getString(1);

                  com.lowagie.text.HeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                  //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
                //  headerFoter.ALIGN_CENTER;
                 //  headerFoter.setRight(5);
                  docPdf.setFooter(footer);




              } catch(java.sql.SQLException SqlExec) {

                  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

              }
                           */
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }  // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf() {

    java.util.Calendar calLast = java.util.Calendar.getInstance();

    calLast.roll(java.util.Calendar.YEAR, -1);

    dateLastyear = calLast.getTime().toString();

    System.out.println(this.dateLastyear);

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          try {

            //    java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("CORPORATION TAX - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(4);

            int headerwidths[] = {40, 40, 20, 20};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));
            Phrase phrase = new Phrase("");

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(2);
            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);

              phrase =
                  new Phrase(
                      "Tax Computation : ".toUpperCase() + dateFormat.format(endDate1),
                      pFontHeader);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }

            table.getDefaultCell().setColspan(2);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
            phrase = new Phrase("Printed on : " + date, pFontHeader1);

            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              //       java.lang.Object[] listofAct = this.getListofActivities();

              java.lang.Object[] listofAct1 = this.getListofActivities1();

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              //                            System.out.println(listofAct.length);
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.PreparedStatement pstmt31w =
                  connectDB.prepareStatement(
                      "delete from ac_corporation_tax WHERE approved = false");
              pstmt31w.executeUpdate();

              java.sql.Statement st13 = connectDB.createStatement();
              java.sql.ResultSet rset13 =
                  st13.executeQuery(" select sum(amount) from pl_account_view");

              // rsetTotals1 = st3.executeQuery("SELECT SUM(debit),SUM(credit) from");
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.addCell("  ");

              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase(rset3.getObject(1).toString().toUpperCase(), pFontHeader);
              phrase = new Phrase("NET INCOME", pFontHeader1);

              table.addCell(phrase);

              //   }

              while (rset13.next()) {

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset13.getString(1)),
                        pFontHeader1);

                table.addCell(phrase);
                pl = rset13.getDouble(1);
                java.sql.PreparedStatement pstmtC =
                    connectDB.prepareStatement(
                        "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

                pstmtC.setObject(1, "" + endDate + "");
                pstmtC.setObject(2, "NET INCOME");
                pstmtC.setObject(3, "Income");
                if (pl < 0) {
                  pstmtC.setDouble(5, pl * -1);
                } else {
                  pstmtC.setDouble(5, pl);
                }
                pstmtC.setDouble(4, 0.00);
                pstmtC.setDouble(6, 0.00);

                pstmtC.executeUpdate();
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.addCell("  ");

              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Add/Less: Disallowable Items ".toUpperCase(), pFontHeader1);
              table.addCell(phrase);
              // table.addCell("Add/Less: Disallowable Items ".toUpperCase(), pFontHeader1);
              for (int i = 0; i < listofAct1.length; i++) {

                java.sql.Statement st6 = connectDB.createStatement();

                java.sql.Statement st7 = connectDB.createStatement();
                // java.sql.Statement st8 = connectDB.createStatement();

                java.sql.ResultSet rset7 =
                    st7.executeQuery(
                        "select description from ac_corporate_disallowables where gl_code = '"
                            + listofAct1[i].toString()
                            + "'");

                java.sql.Statement st8 = connectDB.createStatement();

                java.sql.ResultSet rset8 =
                    st8.executeQuery(
                        "select SUM(debit-credit) from ac_ledger where activity_code = '"
                            + listofAct1[i].toString()
                            + "' and date between '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "'");
                //  java.sql.ResultSet rset8 = st8.executeQuery("select SUM(debit-credit) from
                // ac_ledger where activity_code = '"+listofAct1[i].toString()+"' and date between
                // '"+beginDate+"' AND '"+endDate+"'");

                // rsetTotals1 = st3.executeQuery("SELECT SUM(debit),SUM(credit) from");
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.addCell("  ");

                while (rset7.next()) {
                  while (rset8.next()) {
                    table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                    table.getDefaultCell().setColspan(1);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(rset7.getObject(1).toString().toUpperCase(), pFontHeader);

                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset8.getString(1)),
                            pFontHeader1);

                    table.addCell(phrase);

                    equity = equity + rset8.getDouble(1);

                    java.sql.PreparedStatement pstmt111 =
                        connectDB.prepareStatement(
                            "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

                    pstmt111.setObject(1, "" + endDate + "");
                    pstmt111.setObject(2, rset7.getObject(1).toString());
                    pstmt111.setObject(3, "Disallowable");
                    pstmt111.setDouble(4, rset8.getDouble(1));
                    pstmt111.setDouble(5, 0.00);
                    pstmt111.setDouble(6, 0.00);

                    pstmt111.executeUpdate();
                  }
                }
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(equity)),
                        pFontHeader);

                table.addCell(phrase);
              }

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setColspan(4);
              // table.addCell("Add/Less: Allowable Items ");
              phrase = new Phrase("Add/Less: Allowable Items ".toUpperCase(), pFontHeader1);

              table.addCell(phrase);
              // for (int i = 0; i < listofAct1.length; i++) {

              java.sql.Statement st6 = connectDB.createStatement();

              java.sql.Statement st7 = connectDB.createStatement();

              java.sql.Statement st83 = connectDB.createStatement();

              java.sql.ResultSet rset83 =
                  st83.executeQuery("select sum(investment_allow) from ac_asset_allocation");

              // rsetTotals1 = st3.executeQuery("SELECT SUM(debit),SUM(credit) from");
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              //   table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              while (rset83.next()) {
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("  ".toUpperCase(), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Investment Allowance".toUpperCase(), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset83.getString(1)),
                        pFontHeader1);

                table.addCell(phrase);

                inv = inv + rset83.getDouble(1);

                phrase = new Phrase("    ".toUpperCase(), pFontHeader);

                table.addCell(phrase);
                java.sql.PreparedStatement pstmt1A =
                    connectDB.prepareStatement(
                        "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

                pstmt1A.setObject(1, "" + endDate + "");
                pstmt1A.setObject(2, "Investment Allowance");
                pstmt1A.setObject(3, "Allowable");
                pstmt1A.setDouble(5, inv);
                pstmt1A.setDouble(4, 0.00);
                pstmt1A.setDouble(6, 0.00);

                pstmt1A.executeUpdate();
              }

              inv = inv;
              java.lang.Object[] listofAct2 = this.getListofActivities2();
              for (int y = 0; y < listofAct2.length; y++) {

                java.sql.Statement st81 = connectDB.createStatement();

                java.sql.ResultSet rset81 =
                    st81.executeQuery(
                        "select sum(wear_tear_allow*depreciation_rate/100) from ac_asset_allocation where gl_code = '"
                            + listofAct2[y].toString()
                            + "'");
                while (rset81.next()) {

                  table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
                  table.getDefaultCell().setColspan(1);

                  table.getDefaultCell().setColspan(1);
                  wta = wta = +rset81.getDouble(1);
                  // table.addCell(phrase);
                }
                Total = Total + wta;
              }
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" ".toUpperCase(), pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Wear & Tear Allowance".toUpperCase(), pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(Total)),
                      pFontHeader);
              table.addCell(phrase);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(inv + Total)),
                      pFontHeader);

              table.addCell(phrase);

              java.sql.PreparedStatement pstmtB1 =
                  connectDB.prepareStatement(
                      "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

              pstmtB1.setObject(1, "" + endDate + "");
              pstmtB1.setObject(2, "Wear & Tear Allowance");
              pstmtB1.setObject(3, "Allowable");
              pstmtB1.setDouble(5, Total);
              pstmtB1.setDouble(4, 0.00);
              pstmtB1.setDouble(6, 0.00);

              pstmtB1.executeUpdate();

              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("ADJUSTED TAXABLE INCOME".toUpperCase(), pFontHeader1);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              if (pl < 0) {
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(
                                java.lang.String.valueOf((inv + Total + pl) - (-equity))),
                        pFontHeader);

                table.addCell(phrase);
                taxableIncome = (inv + Total + pl) - (-equity);
              } else {
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf((inv + Total + pl) - equity)),
                        pFontHeader);

                table.addCell(phrase);
                taxableIncome = (inv + Total + pl) - (equity);
              }

              java.sql.Statement st8111 = connectDB.createStatement();

              java.sql.ResultSet rset8111 =
                  st8111.executeQuery(
                      "select count(debit) from ac_corporation_tax where category Ilike 'Tax Loss BFWD'");
              while (rset8111.next()) {
                taxbf = rset8111.getInt(1);
              }

              if (taxbf > 0) {
                java.sql.Statement st811 = connectDB.createStatement();

                java.sql.ResultSet rset811 =
                    st811.executeQuery(
                        "select sum(debit-tax_divided) as debit from ac_corporation_tax WHERE category Ilike 'Tax loss BFWD'");
                while (rset811.next()) {
                  table.getDefaultCell().setColspan(3);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("TAX LOSSES BFWD".toUpperCase(), pFontHeader1);

                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  table.getDefaultCell().setColspan(1);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset811.getString(1)),
                          pFontHeader1);

                  table.addCell(phrase);
                  loss = rset811.getDouble(1);
                }
              } else {
                table.getDefaultCell().setColspan(3);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("TAX LOSSES BFWD".toUpperCase(), pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(0.00)),
                        pFontHeader);

                table.addCell(phrase);

                loss = 0.00;
              }

              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("TAXABLE INCOME".toUpperCase(), pFontHeader1);

              table.addCell(phrase);

              taxable = taxableIncome - loss;

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(taxable)),
                      pFontHeader);

              table.addCell(phrase);

              java.sql.Statement st8112 = connectDB.createStatement();

              java.sql.ResultSet rset8112 =
                  st8112.executeQuery(
                      " select ps.rate from pb_statutory ps, pb_activity pa where ps.gl_code = pa.code and pa.activity_category ilike 'CTX'");
              while (rset8112.next()) {
                table.getDefaultCell().setColspan(3);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("TAX DUE".toUpperCase(), pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                table.getDefaultCell().setColspan(1);
                //   phrase = new Phrase(new
                // com.afrisoftech.sys.Format2Currency().Format2Currency(rset8112.getString(1)),
                // pFontHeader1);
                taxRate = rset8112.getDouble(1);
              }

              taxDue = taxable * taxRate / 100;

              if (taxDue > 0) {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(taxDue)),
                        pFontHeader);

                table.addCell(phrase);
              } else {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(0.00)),
                        pFontHeader);

                table.addCell(phrase);
              }
              java.sql.PreparedStatement pstmt1 =
                  connectDB.prepareStatement(
                      "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

              pstmt1.setObject(1, "" + endDate + "");
              if (taxDue < 0) {
                pstmt1.setObject(2, "Tax Loss BFWD");
                pstmt1.setObject(3, "Tax Loss BFWD");
                pstmt1.setDouble(4, taxable * -1);
                pstmt1.setDouble(6, 0.00);
              } else {
                pstmt1.setObject(2, "Tax For The Year");
                pstmt1.setObject(3, "Tax Due");
                pstmt1.setDouble(4, 0.00);
                pstmt1.setDouble(6, taxDue);
              }

              pstmt1.setDouble(5, 0.00);
              pstmt1.executeUpdate();

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class CorporateTaxPdf implements java.lang.Runnable {

  public static java.sql.Connection connectDB = null;

  double inv = 0.00;
  double wta = 0.00;
  double equity = 0.00;
  double Total = 0.00;

  double pl = 0.00;
  double disall = 0.00;
  double taxableIncome = 0.00;
  double taxable = 0.00;
  double loss = 0.00;
  double taxDue = 0.00;
  double taxRate = 0.00;

  int taxbf = 0;
  String ks;
  java.util.Date beginDate = null;

  java.lang.String dateLastyear = null;

  java.util.Date endDate = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.NORMAL);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void CorporateTaxPdf(
      java.sql.Connection connDb, java.util.Date begindate, java.util.Date endate) {
    connectDB = connDb;
    beginDate = begindate;
    endDate = endate;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //	new BalanceSheetPdf().BalanceSheetPdf();

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(20);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.util.Calendar calLast = java.util.Calendar.getInstance();

    calLast.roll(java.util.Calendar.YEAR, -1);

    dateLastyear = calLast.getTime().toString();

    System.out.println(this.dateLastyear);

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          try {

            //    java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("CORPORATION TAX - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(4);

            int headerwidths[] = {40, 40, 20, 20};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));
            Phrase phrase = new Phrase("");

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(2);
            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);

              phrase =
                  new Phrase(
                      "Tax Computation : ".toUpperCase() + dateFormat.format(endDate1),
                      pFontHeader);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }

            table.getDefaultCell().setColspan(2);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
            phrase = new Phrase("Printed on : " + date, pFontHeader1);

            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              //       java.lang.Object[] listofAct = this.getListofActivities();

              java.lang.Object[] listofAct1 = this.getListofActivities1();

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              //                            System.out.println(listofAct.length);
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.PreparedStatement pstmt31w =
                  connectDB.prepareStatement(
                      "delete from ac_corporation_tax WHERE approved = false");
              pstmt31w.executeUpdate();

              java.sql.Statement st13 = connectDB.createStatement();
              java.sql.ResultSet rset13 =
                  st13.executeQuery(" select sum(amount) from pl_account_view");

              // rsetTotals1 = st3.executeQuery("SELECT SUM(debit),SUM(credit) from");
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.addCell("  ");

              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase(rset3.getObject(1).toString().toUpperCase(), pFontHeader);
              phrase = new Phrase("NET INCOME", pFontHeader1);

              table.addCell(phrase);

              //   }

              while (rset13.next()) {

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset13.getString(1)),
                        pFontHeader1);

                table.addCell(phrase);
                pl = rset13.getDouble(1);
                java.sql.PreparedStatement pstmtC =
                    connectDB.prepareStatement(
                        "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

                pstmtC.setObject(1, "" + endDate + "");
                pstmtC.setObject(2, "NET INCOME");
                pstmtC.setObject(3, "Income");
                if (pl < 0) {
                  pstmtC.setDouble(5, pl * -1);
                } else {
                  pstmtC.setDouble(5, pl);
                }
                pstmtC.setDouble(4, 0.00);
                pstmtC.setDouble(6, 0.00);

                pstmtC.executeUpdate();
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.addCell("  ");

              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Add/Less: Disallowable Items ".toUpperCase(), pFontHeader1);
              table.addCell(phrase);
              // table.addCell("Add/Less: Disallowable Items ".toUpperCase(), pFontHeader1);
              for (int i = 0; i < listofAct1.length; i++) {

                java.sql.Statement st6 = connectDB.createStatement();

                java.sql.Statement st7 = connectDB.createStatement();
                // java.sql.Statement st8 = connectDB.createStatement();

                java.sql.ResultSet rset7 =
                    st7.executeQuery(
                        "select description from ac_corporate_disallowables where gl_code = '"
                            + listofAct1[i].toString()
                            + "'");

                java.sql.Statement st8 = connectDB.createStatement();

                java.sql.ResultSet rset8 =
                    st8.executeQuery(
                        "select SUM(debit-credit) from ac_ledger where activity_code = '"
                            + listofAct1[i].toString()
                            + "' and date between '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "'");
                //  java.sql.ResultSet rset8 = st8.executeQuery("select SUM(debit-credit) from
                // ac_ledger where activity_code = '"+listofAct1[i].toString()+"' and date between
                // '"+beginDate+"' AND '"+endDate+"'");

                // rsetTotals1 = st3.executeQuery("SELECT SUM(debit),SUM(credit) from");
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.addCell("  ");

                while (rset7.next()) {
                  while (rset8.next()) {
                    table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                    table.getDefaultCell().setColspan(1);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(rset7.getObject(1).toString().toUpperCase(), pFontHeader);

                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset8.getString(1)),
                            pFontHeader1);

                    table.addCell(phrase);

                    equity = equity + rset8.getDouble(1);

                    java.sql.PreparedStatement pstmt111 =
                        connectDB.prepareStatement(
                            "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

                    pstmt111.setObject(1, "" + endDate + "");
                    pstmt111.setObject(2, rset7.getObject(1).toString());
                    pstmt111.setObject(3, "Disallowable");
                    pstmt111.setDouble(4, rset8.getDouble(1));
                    pstmt111.setDouble(5, 0.00);
                    pstmt111.setDouble(6, 0.00);

                    pstmt111.executeUpdate();
                  }
                }
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(equity)),
                        pFontHeader);

                table.addCell(phrase);
              }

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setColspan(4);
              // table.addCell("Add/Less: Allowable Items ");
              phrase = new Phrase("Add/Less: Allowable Items ".toUpperCase(), pFontHeader1);

              table.addCell(phrase);
              // for (int i = 0; i < listofAct1.length; i++) {

              java.sql.Statement st6 = connectDB.createStatement();

              java.sql.Statement st7 = connectDB.createStatement();

              java.sql.Statement st83 = connectDB.createStatement();

              java.sql.ResultSet rset83 =
                  st83.executeQuery("select sum(investment_allow) from ac_asset_allocation");

              // rsetTotals1 = st3.executeQuery("SELECT SUM(debit),SUM(credit) from");
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              //   table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              while (rset83.next()) {
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("  ".toUpperCase(), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Investment Allowance".toUpperCase(), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset83.getString(1)),
                        pFontHeader1);

                table.addCell(phrase);

                inv = inv + rset83.getDouble(1);

                phrase = new Phrase("    ".toUpperCase(), pFontHeader);

                table.addCell(phrase);
                java.sql.PreparedStatement pstmt1A =
                    connectDB.prepareStatement(
                        "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

                pstmt1A.setObject(1, "" + endDate + "");
                pstmt1A.setObject(2, "Investment Allowance");
                pstmt1A.setObject(3, "Allowable");
                pstmt1A.setDouble(5, inv);
                pstmt1A.setDouble(4, 0.00);
                pstmt1A.setDouble(6, 0.00);

                pstmt1A.executeUpdate();
              }

              inv = inv;
              java.lang.Object[] listofAct2 = this.getListofActivities2();
              for (int y = 0; y < listofAct2.length; y++) {

                java.sql.Statement st81 = connectDB.createStatement();

                java.sql.ResultSet rset81 =
                    st81.executeQuery(
                        "select sum(wear_tear_allow*depreciation_rate/100) from ac_asset_allocation where gl_code = '"
                            + listofAct2[y].toString()
                            + "'");
                while (rset81.next()) {

                  table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
                  table.getDefaultCell().setColspan(1);

                  table.getDefaultCell().setColspan(1);
                  wta = wta = +rset81.getDouble(1);
                  // table.addCell(phrase);
                }
                Total = Total + wta;
              }
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" ".toUpperCase(), pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Wear & Tear Allowance".toUpperCase(), pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(Total)),
                      pFontHeader);
              table.addCell(phrase);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(inv + Total)),
                      pFontHeader);

              table.addCell(phrase);

              java.sql.PreparedStatement pstmtB1 =
                  connectDB.prepareStatement(
                      "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

              pstmtB1.setObject(1, "" + endDate + "");
              pstmtB1.setObject(2, "Wear & Tear Allowance");
              pstmtB1.setObject(3, "Allowable");
              pstmtB1.setDouble(5, Total);
              pstmtB1.setDouble(4, 0.00);
              pstmtB1.setDouble(6, 0.00);

              pstmtB1.executeUpdate();

              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("ADJUSTED TAXABLE INCOME".toUpperCase(), pFontHeader1);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              if (pl < 0) {
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(
                                java.lang.String.valueOf((inv + Total + pl) - (-equity))),
                        pFontHeader);

                table.addCell(phrase);
                taxableIncome = (inv + Total + pl) - (-equity);
              } else {
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf((inv + Total + pl) - equity)),
                        pFontHeader);

                table.addCell(phrase);
                taxableIncome = (inv + Total + pl) - (equity);
              }

              java.sql.Statement st8111 = connectDB.createStatement();

              java.sql.ResultSet rset8111 =
                  st8111.executeQuery(
                      "select count(debit) from ac_corporation_tax where category Ilike 'Tax Loss BFWD'");
              while (rset8111.next()) {
                taxbf = rset8111.getInt(1);
              }

              if (taxbf > 0) {
                java.sql.Statement st811 = connectDB.createStatement();

                java.sql.ResultSet rset811 =
                    st811.executeQuery(
                        "select sum(debit-tax_divided) as debit from ac_corporation_tax WHERE category Ilike 'Tax loss BFWD'");
                while (rset811.next()) {
                  table.getDefaultCell().setColspan(3);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("TAX LOSSES BFWD".toUpperCase(), pFontHeader1);

                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  table.getDefaultCell().setColspan(1);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset811.getString(1)),
                          pFontHeader1);

                  table.addCell(phrase);
                  loss = rset811.getDouble(1);
                }
              } else {
                table.getDefaultCell().setColspan(3);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("TAX LOSSES BFWD".toUpperCase(), pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(0.00)),
                        pFontHeader);

                table.addCell(phrase);

                loss = 0.00;
              }

              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("TAXABLE INCOME".toUpperCase(), pFontHeader1);

              table.addCell(phrase);

              taxable = taxableIncome - loss;

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(taxable)),
                      pFontHeader);

              table.addCell(phrase);

              java.sql.Statement st8112 = connectDB.createStatement();

              java.sql.ResultSet rset8112 =
                  st8112.executeQuery(
                      " select ps.rate from pb_statutory ps, pb_activity pa where ps.gl_code = pa.code and pa.activity_category ilike 'CTX'");
              while (rset8112.next()) {
                table.getDefaultCell().setColspan(3);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("TAX DUE".toUpperCase(), pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                table.getDefaultCell().setColspan(1);
                //   phrase = new Phrase(new
                // com.afrisoftech.sys.Format2Currency().Format2Currency(rset8112.getString(1)),
                // pFontHeader1);
                taxRate = rset8112.getDouble(1);
              }

              taxDue = taxable * taxRate / 100;

              if (taxDue > 0) {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(taxDue)),
                        pFontHeader);

                table.addCell(phrase);
              } else {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(0.00)),
                        pFontHeader);

                table.addCell(phrase);
              }
              java.sql.PreparedStatement pstmt1 =
                  connectDB.prepareStatement(
                      "insert into ac_corporation_tax values(?, ?, ?, ?, ?,?)");

              pstmt1.setObject(1, "" + endDate + "");
              if (taxDue < 0) {
                pstmt1.setObject(2, "Tax Loss BFWD");
                pstmt1.setObject(3, "Tax Loss BFWD");
                pstmt1.setDouble(4, taxable * -1);
                pstmt1.setDouble(6, 0.00);
              } else {
                pstmt1.setObject(2, "Tax For The Year");
                pstmt1.setObject(3, "Tax Due");
                pstmt1.setDouble(4, 0.00);
                pstmt1.setDouble(6, taxDue);
              }

              pstmt1.setDouble(5, 0.00);
              pstmt1.executeUpdate();

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofActivities() {

    java.lang.Object[] listofActivities = null;

    /*       java.util.Vector listActVector = new java.util.Vector(1,1);



          try {


              java.sql.Statement stmt1 = connectDB.createStatement();

              java.sql.ResultSet rSet1 = stmt1.executeQuery("SELECT DISTINCT main_code FROM pb_accounts_setup where class = 'ba' order by main_code");

              while (rSet1.next()) {

                  listActVector.addElement(rSet1.getObject(1).toString());

              }

          }catch (java.sql.SQLException sqlExec) {

              javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());

          }

          listofActivities = listActVector.toArray();
    */
    return listofActivities;
  }

  public java.lang.Object[] getListofActivities1() {

    java.lang.Object[] listofActivities1 = null;

    java.util.Vector listActVector = new java.util.Vector(1, 1);

    try {

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT gl_code FROM ac_corporate_disallowables order by gl_code");

      while (rSet1.next()) {

        listActVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofActivities1 = listActVector.toArray();

    return listofActivities1;
  }

  public java.lang.Object[] getListofActivities2() {

    java.lang.Object[] listofActivities2 = null;

    java.util.Vector listActVector = new java.util.Vector(1, 1);

    try {

      //  java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/insurance","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT gl_code FROM ac_asset_allocation where cost > depreciation");

      while (rSet1.next()) {

        listActVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofActivities2 = listActVector.toArray();

    System.out.println("Total list of activities = " + listofActivities2.length);

    return listofActivities2;
  }
}
  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.ResultSet rset2 = st3.executeQuery("select name from interim_footer");

            // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from
            // pb_hospitalprofile");
            //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) Messg = rset2.getObject(1).toString();

            //  while(rset4.next())
            //    date = rset4.getObject(1).toString();

            com.lowagie.text.HeaderFooter footer =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + Messg + ""),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            //  headerFoter.ALIGN_CENTER;
            //  headerFoter.setRight(5);
            docPdf.setFooter(footer);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

            int headerwidths[] = {25, 25, 20, 15, 15, 15};

            table.setWidths(headerwidths);
            // table..setWidths(headerwidths);
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(6);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement stc = connectDB.createStatement();
              java.sql.Statement stb = connectDB.createStatement();
              java.sql.Statement sta = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st21 = connectDB.createStatement();
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st32 = connectDB.createStatement();
              java.sql.ResultSet rsetc =
                  stc.executeQuery(
                      "select discharge from hp_admission where patient_no = '"
                          + memNo
                          + "' order by date_admitted desc LIMIT 1");

              java.sql.ResultSet rsetb =
                  stb.executeQuery(
                      "select (discharge_date - adm_date) from hp_inpatient_register where patient_no = '"
                          + memNo
                          + "'");

              java.sql.ResultSet rset3 =
                  st3.executeQuery(
                      "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
              java.sql.ResultSet rset22 = st32.executeQuery("SELECT header_name from pb_header");
              java.sql.ResultSet rseta =
                  sta.executeQuery(
                      "select ad.ward,ad.bed_no,ad.doctor ,pr.adm_date,pr.discharge_date from hp_admission ad,hp_inpatient_register pr where pr.patient_no = '"
                          + memNo
                          + "' and pr.patient_no = ad.patient_no");

              //  java.sql.ResultSet rset = st.executeQuery("select DISTINCT member_code,
              // member_name,date from shares_transactions order by member_code");
              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select patient_no,initcap(second_name||' '||first_name||' '||last_name),address,residence,tel_no,payer,description,category from hp_inpatient_register where patient_no = '"
                          + memNo
                          + "'");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      " select date::date,initcap(service) as service,dosage,reference,debit-credit from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' AND (reference IS NULL OR reference != '') and service != 'N.H.I.F' AND service != 'Receipt' order by date::date"); // union select date::date,initcap(service) as service,dosage,reference,credit from hp_patient_card where patient_no = '"+memNo+"' and credit > 0 order by date");
              java.sql.ResultSet rsetTotals =
                  st2.executeQuery(
                      "select sum(debit - credit) from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' and service != 'N.H.I.F' and service != 'Receipt'");

              java.sql.ResultSet rset11 =
                  st11.executeQuery(
                      " select date::date,initcap(service) as service,dosage,reference,credit-debit from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' AND (service = 'N.H.I.F' OR service = 'Receipt') AND invoice_no NOT LIKE 'I%' AND invoice_no NOT LIKE 'O%' order by date::date"); // union select date::date,initcap(service) as service,dosage,reference,credit from hp_patient_card where patient_no = '"+memNo+"' and credit > 0 order by date");
              java.sql.ResultSet rsetTotals1 =
                  st21.executeQuery(
                      "select sum(credit-debit) from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' and (service = 'N.H.I.F' OR service = 'Receipt') AND invoice_no NOT LIKE 'I%' AND invoice_no NOT LIKE 'O%'");

              while (rset22.next()) // {
              table.getDefaultCell().setColspan(6);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(dbObject.getDBObject(rset22.getObject(1), "-"), pFontHeader11);
              table.addCell(phrase);

              /*
                    table.getDefaultCell().setColspan(6);
                    table.getDefaultCell().setBorderColor(java.awt.Color.white);

                    table.getDefaultCell().setColspan(2);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Address:"+"\t"+dbObject.getDBObject(rset3.getObject(2), "-"), pFontHeader);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Tel:"+"\t"+dbObject.getDBObject(rset3.getObject(3), "-"), pFontHeader);

                    table.addCell(phrase);


                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Fax:"+"\t"+ dbObject.getDBObject(rset3.getObject(5), "-"), pFontHeader);

                    table.addCell(phrase);
                    table.getDefaultCell().setBorderColor(java.awt.Color.white);
                    table.getDefaultCell().setColspan(3);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Email:"+"\t"+dbObject.getDBObject(rset3.getObject(6), "-"), pFontHeader);
                    table.addCell(phrase);


                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Website:"+"\t" +dbObject.getDBObject(rset3.getObject(7), "-"), pFontHeader);

                    table.addCell(phrase);
                    /// table.addCell("  ");


                }
              */
              table.getDefaultCell().setColspan(6);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("Interim Invoice", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setBorder(Rectangle.BOTTOM);
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Patient No:  " + memNo, pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Ward: " + dbObject.getDBObject(rseta.getObject(1), "-"), pFontHeader1);
              table.addCell(phrase);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Patient Name: " + dbObject.getDBObject(rset.getObject(2), "-"),
                      pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Bed No: " + dbObject.getDBObject(rseta.getObject(2), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Address: " + dbObject.getDBObject(rset.getObject(3), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Doctor: " + dbObject.getDBObject(rseta.getObject(3), "-"), pFontHeader1);
              table.addCell(phrase);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase("Town  " + dbObject.getDBObject(rset.getObject(4), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Adm Date: " + dbObject.getDBObject(rseta.getObject(4), "-"), pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "TEl No. " + dbObject.getDBObject(rset.getObject(5), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Discharge Date: " + dbObject.getDBObject(rseta.getObject(5), "-"),
                      pFontHeader1);
              table.addCell(phrase);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Payer : " + dbObject.getDBObject(rset.getObject(6), "-"), pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Patient Category : " + dbObject.getDBObject(rset.getObject(8), "-"),
                      pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Scheme Name : " + dbObject.getDBObject(rset.getObject(7), "-"),
                      pFontHeader1);
              table.addCell(phrase);

              //      if(rsetc.getBoolean(1) == true){
              while (rsetb.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "No.of Days : " + dbObject.getDBObject(rsetb.getObject(1), "-"),
                      pFontHeader1);
              table.addCell(phrase);
              //  }
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Date", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Description", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Qty", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Ref", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Amt. KShs", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Bal. KShs", pFontHeader1);
              table.addCell(phrase);

              while (rset1.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(5)),
                        pFontHeader);

                table.addCell(phrase);

                osBalance = osBalance + rset1.getDouble(5);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance)),
                        pFontHeader);
                //   current = current + osBalance;

                table.addCell(phrase);
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              while (rsetTotals.next()) {

                table.getDefaultCell().setColspan(3);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Invoice Amount", pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(3);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rsetTotals.getString(1)),
                        pFontHeader);

                // table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance)),
                        pFontHeader1);

                table.addCell(phrase);

                // phrase = new Phrase(" ");

              }

              while (rset11.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset11.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset11.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset11.getObject(4), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset11.getString(5)),
                        pFontHeader);

                table.addCell(phrase);

                osBalance1 = osBalance1 + rset11.getDouble(5);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance1)),
                        pFontHeader);
                //   current = current + osBalance;

                table.addCell(phrase);
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);
              while (rsetTotals1.next()) {

                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Total Receipts", pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rsetTotals1.getString(1)),
                        pFontHeader);

                // table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance1)),
                        pFontHeader1);

                table.addCell(phrase);

                // phrase = new Phrase(" ");

              }

              //  while (rsetTotals.next()) {
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);
              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" ", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Net Amount", pFontHeader1);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              //  phrase = new Phrase(new
              // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(1)),pFontHeader);

              // table.addCell(phrase);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance - osBalance1)),
                      pFontHeader1);

              table.addCell(phrase);

              // phrase = new Phrase(" ");

              // }
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class PatientBillPdf implements java.lang.Runnable {
  java.lang.String MNo = null;

  com.afrisoftech.lib.DBObject dbObject;

  java.util.Date beginDate = null;

  java.lang.String endDate = null;
  double osBalance = 0.00;
  double osBalance1 = 0.00;
  double current = 0.00;
  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  //  java.lang.String memNo2Use = null;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.BOLD);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();
  com.lowagie.text.Font pFontHeader11 = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void PatientBillPdf(
      java.sql.Connection connDb, java.lang.String combox, java.util.Date begindate) {
    MNo = combox;

    beginDate = begindate;

    connectDB = connDb;

    dbObject = new com.afrisoftech.lib.DBObject();

    // beginDate = begindate;

    // endDate = endate;
    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new MemberStatementPdf().MemberStatementPdf(args[0]);

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf(MNo);

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(100);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.ResultSet rset2 = st3.executeQuery("select name from interim_footer");

            // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from
            // pb_hospitalprofile");
            //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) Messg = rset2.getObject(1).toString();

            //  while(rset4.next())
            //    date = rset4.getObject(1).toString();

            com.lowagie.text.HeaderFooter footer =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + Messg + ""),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            //  headerFoter.ALIGN_CENTER;
            //  headerFoter.setRight(5);
            docPdf.setFooter(footer);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

            int headerwidths[] = {25, 25, 20, 15, 15, 15};

            table.setWidths(headerwidths);
            // table..setWidths(headerwidths);
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(6);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement stc = connectDB.createStatement();
              java.sql.Statement stb = connectDB.createStatement();
              java.sql.Statement sta = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st21 = connectDB.createStatement();
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st32 = connectDB.createStatement();
              java.sql.ResultSet rsetc =
                  stc.executeQuery(
                      "select discharge from hp_admission where patient_no = '"
                          + memNo
                          + "' order by date_admitted desc LIMIT 1");

              java.sql.ResultSet rsetb =
                  stb.executeQuery(
                      "select (discharge_date - adm_date) from hp_inpatient_register where patient_no = '"
                          + memNo
                          + "'");

              java.sql.ResultSet rset3 =
                  st3.executeQuery(
                      "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
              java.sql.ResultSet rset22 = st32.executeQuery("SELECT header_name from pb_header");
              java.sql.ResultSet rseta =
                  sta.executeQuery(
                      "select ad.ward,ad.bed_no,ad.doctor ,pr.adm_date,pr.discharge_date from hp_admission ad,hp_inpatient_register pr where pr.patient_no = '"
                          + memNo
                          + "' and pr.patient_no = ad.patient_no");

              //  java.sql.ResultSet rset = st.executeQuery("select DISTINCT member_code,
              // member_name,date from shares_transactions order by member_code");
              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select patient_no,initcap(second_name||' '||first_name||' '||last_name),address,residence,tel_no,payer,description,category from hp_inpatient_register where patient_no = '"
                          + memNo
                          + "'");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      " select date::date,initcap(service) as service,dosage,reference,debit-credit from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' AND (reference IS NULL OR reference != '') and service != 'N.H.I.F' AND service != 'Receipt' order by date::date"); // union select date::date,initcap(service) as service,dosage,reference,credit from hp_patient_card where patient_no = '"+memNo+"' and credit > 0 order by date");
              java.sql.ResultSet rsetTotals =
                  st2.executeQuery(
                      "select sum(debit - credit) from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' and service != 'N.H.I.F' and service != 'Receipt'");

              java.sql.ResultSet rset11 =
                  st11.executeQuery(
                      " select date::date,initcap(service) as service,dosage,reference,credit-debit from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' AND (service = 'N.H.I.F' OR service = 'Receipt') AND invoice_no NOT LIKE 'I%' AND invoice_no NOT LIKE 'O%' order by date::date"); // union select date::date,initcap(service) as service,dosage,reference,credit from hp_patient_card where patient_no = '"+memNo+"' and credit > 0 order by date");
              java.sql.ResultSet rsetTotals1 =
                  st21.executeQuery(
                      "select sum(credit-debit) from hp_patient_card where patient_no = '"
                          + memNo
                          + "' AND date::date >= '"
                          + beginDate
                          + "' and (service = 'N.H.I.F' OR service = 'Receipt') AND invoice_no NOT LIKE 'I%' AND invoice_no NOT LIKE 'O%'");

              while (rset22.next()) // {
              table.getDefaultCell().setColspan(6);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(dbObject.getDBObject(rset22.getObject(1), "-"), pFontHeader11);
              table.addCell(phrase);

              /*
                    table.getDefaultCell().setColspan(6);
                    table.getDefaultCell().setBorderColor(java.awt.Color.white);

                    table.getDefaultCell().setColspan(2);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Address:"+"\t"+dbObject.getDBObject(rset3.getObject(2), "-"), pFontHeader);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Tel:"+"\t"+dbObject.getDBObject(rset3.getObject(3), "-"), pFontHeader);

                    table.addCell(phrase);


                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Fax:"+"\t"+ dbObject.getDBObject(rset3.getObject(5), "-"), pFontHeader);

                    table.addCell(phrase);
                    table.getDefaultCell().setBorderColor(java.awt.Color.white);
                    table.getDefaultCell().setColspan(3);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Email:"+"\t"+dbObject.getDBObject(rset3.getObject(6), "-"), pFontHeader);
                    table.addCell(phrase);


                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase("Website:"+"\t" +dbObject.getDBObject(rset3.getObject(7), "-"), pFontHeader);

                    table.addCell(phrase);
                    /// table.addCell("  ");


                }
              */
              table.getDefaultCell().setColspan(6);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("Interim Invoice", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setBorder(Rectangle.BOTTOM);
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Patient No:  " + memNo, pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Ward: " + dbObject.getDBObject(rseta.getObject(1), "-"), pFontHeader1);
              table.addCell(phrase);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Patient Name: " + dbObject.getDBObject(rset.getObject(2), "-"),
                      pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Bed No: " + dbObject.getDBObject(rseta.getObject(2), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Address: " + dbObject.getDBObject(rset.getObject(3), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Doctor: " + dbObject.getDBObject(rseta.getObject(3), "-"), pFontHeader1);
              table.addCell(phrase);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase("Town  " + dbObject.getDBObject(rset.getObject(4), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Adm Date: " + dbObject.getDBObject(rseta.getObject(4), "-"), pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "TEl No. " + dbObject.getDBObject(rset.getObject(5), "-"), pFontHeader1);
              table.addCell(phrase);

              while (rseta.next())
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Discharge Date: " + dbObject.getDBObject(rseta.getObject(5), "-"),
                      pFontHeader1);
              table.addCell(phrase);
              while (rset.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Payer : " + dbObject.getDBObject(rset.getObject(6), "-"), pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Patient Category : " + dbObject.getDBObject(rset.getObject(8), "-"),
                      pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "Scheme Name : " + dbObject.getDBObject(rset.getObject(7), "-"),
                      pFontHeader1);
              table.addCell(phrase);

              //      if(rsetc.getBoolean(1) == true){
              while (rsetb.next()) table.getDefaultCell().setColspan(3);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase =
                  new Phrase(
                      "No.of Days : " + dbObject.getDBObject(rsetb.getObject(1), "-"),
                      pFontHeader1);
              table.addCell(phrase);
              //  }
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Date", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Description", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Qty", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Ref", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Amt. KShs", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Bal. KShs", pFontHeader1);
              table.addCell(phrase);

              while (rset1.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(5)),
                        pFontHeader);

                table.addCell(phrase);

                osBalance = osBalance + rset1.getDouble(5);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance)),
                        pFontHeader);
                //   current = current + osBalance;

                table.addCell(phrase);
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              while (rsetTotals.next()) {

                table.getDefaultCell().setColspan(3);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Invoice Amount", pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(3);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rsetTotals.getString(1)),
                        pFontHeader);

                // table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance)),
                        pFontHeader1);

                table.addCell(phrase);

                // phrase = new Phrase(" ");

              }

              while (rset11.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset11.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset11.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset11.getObject(4), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset11.getString(5)),
                        pFontHeader);

                table.addCell(phrase);

                osBalance1 = osBalance1 + rset11.getDouble(5);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance1)),
                        pFontHeader);
                //   current = current + osBalance;

                table.addCell(phrase);
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);
              while (rsetTotals1.next()) {

                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Total Receipts", pFontHeader1);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rsetTotals1.getString(1)),
                        pFontHeader);

                // table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance1)),
                        pFontHeader1);

                table.addCell(phrase);

                // phrase = new Phrase(" ");

              }

              //  while (rsetTotals.next()) {
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);
              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" ", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Net Amount", pFontHeader1);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              //  phrase = new Phrase(new
              // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(1)),pFontHeader);

              // table.addCell(phrase);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance - osBalance1)),
                      pFontHeader1);

              table.addCell(phrase);

              // phrase = new Phrase(" ");

              // }
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
}
  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      double osBalance1 = 0.00;
      double osBalance = 0.00;
      double current = 0.00;
      double osBalancebf = 0.00;
      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Allocation - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(6);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) table1.getDefaultCell().setColspan(6);

              table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader11);
              table1.addCell(phrase);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          //  } catch(java.io.FileNotFoundException fnfExec) {

          //  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
          // fnfExec.getMessage());

          /// }
          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(10);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {12, 10, 23, 10, 12, 13, 8, 11, 10, 8};

            table.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            table.setHeaderRows(10);
            //  }
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(10);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.Statement st41 = connectDB.createStatement();
              java.sql.Statement st5 = connectDB.createStatement();
              // java.sql.ResultSet rset3 = st3.executeQuery("select hospital_name,postal_code||'
              // '||box_no||' '||town,main_telno||'
              // '||other_telno,initcap(street),main_faxno,email,website,room_no from
              // pb_hospitalprofile");
              //  java.sql.ResultSet rset4 = st4.executeQuery("select scheme_manager from
              // ac_scheme_providers where scheme_manager = '"+memNo+"'");
              java.sql.ResultSet rset4 =
                  st4.executeQuery(
                      "select scheme_name,account_no from ac_schemes where account_no = '"
                          + memNo
                          + "'");
              java.sql.ResultSet rset41 =
                  st41.executeQuery(
                      "select payer_name from ac_schemes where account_no = '" + memNo + "'");
              //   java.sql.ResultSet rset1 = st1.executeQuery("select ac.date,pc.scheme_staff_no,
              // ac.payee,ac.reference_no,sum(ac.debit),ac.admission_no from hp_patient_card
              // pc,ac_debtors ac where pc.patient_no = ac.admission_no and ac.dealer = '"+memNo+"'
              // and ac.dealer = pc.scheme AND ac.date::date BETWEEN '"+beginDate+"' AND
              // '"+endDate+"' and ac.debit > 0 group by ac.date,pc.scheme_staff_no,
              // ac.payee,ac.reference_no,ac.admission_no");// UNION select
              // pd.date::date,initcap(pd.scheme_staff_no), (sh.first_name||' '||sh.second_name||'
              // '||sh.last_name) as name,pd.reference,sum(pd.credit),pd.patient_no from
              // hp_patient_card pd,hp_inpatient_register sh where pd.patient_no = sh.patient_no and
              // pd.isurer = '"+memNo+"' AND pd.date::date BETWEEN '"+beginDate+"' AND '"+endDate+"'
              // and pd.credit > 0 group by pd.date::date,pd.scheme_staff_no,
              // name,pd.reference,pd.invoice_no,pd.patient_no order by pd.invoice_no");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      "select al.date,db.admission_no,db.item,al.inv_no,al.inv_date,db.debit, al.cheque_no,al.amount,al.amount_alloc,(db.debit-al.amount_alloc) from db_allocation al,ac_debtors db where al.acc_no = '"
                          + memNo
                          + "' and al.inv_no = db.invoice_no AND al.date::date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' order by al.date"); // UNION select
                                                   // pd.date::date,initcap(pd.scheme_staff_no),
                                                   // (sh.first_name||' '||sh.second_name||'
                                                   // '||sh.last_name) as
                                                   // name,pd.reference,sum(pd.credit),pd.patient_no
                                                   // from hp_patient_card pd,hp_inpatient_register
                                                   // sh where pd.patient_no = sh.patient_no and
                                                   // pd.isurer = '"+memNo+"' AND pd.date::date
                                                   // BETWEEN '"+beginDate+"' AND '"+endDate+"' and
                                                   // pd.credit > 0 group by
                                                   // pd.date::date,pd.scheme_staff_no,
                                                   // name,pd.reference,pd.invoice_no,pd.patient_no
                                                   // order by pd.invoice_no");
              // java.sql.ResultSet rsetTotals2 = st22.executeQuery("select sum(debit),sum(balance)
              // from ac_debtors where account_no = '"+memNo+"' AND date::date < '"+beginDate+"'");

              //  java.sql.ResultSet rset1 = st1.executeQuery("select
              // pc.date::date,pc.scheme_staff_no, initcap(sh.first_name||' '||sh.second_name||'
              // '||sh.last_name) as name,pc.reference,sum(pc.credit),pc.patient_no from
              // hp_patient_card pc,hp_patient_register sh where pc.scheme_staff_no = sh.account_no
              // and pc.isurer = '"+memNo+"' AND pc.date::date BETWEEN '"+beginDate+"' AND
              // '"+endDate+"' and pc.credit > 0 group by pc.date::date,pc.scheme_staff_no,
              // name,pc.reference,pc.invoice_no,pc.patient_no");// UNION select
              // pd.date::date,initcap(pd.scheme_staff_no), (sh.first_name||' '||sh.second_name||'
              // '||sh.last_name) as name,pd.reference,sum(pd.credit),pd.patient_no from
              // hp_patient_card pd,hp_inpatient_register sh where pd.patient_no = sh.patient_no and
              // pd.isurer = '"+memNo+"' AND pd.date::date BETWEEN '"+beginDate+"' AND '"+endDate+"'
              // and pd.credit > 0 group by pd.date::date,pd.scheme_staff_no,
              // name,pd.reference,pd.invoice_no,pd.patient_no order by pd.invoice_no");
              //  java.sql.ResultSet rsetTotals = st2.executeQuery("select
              // sum(amount),sum(amount_alloc) from db_allocation where acc_no = '"+memNo+"' AND
              // date::date BETWEEN '"+beginDate+"' AND '"+endDate+"' and acc_no = '"+memNo+"'");

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP | Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(10);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("Payment Allocation Report", pFontHeader11);
              table.addCell(phrase);

              while (rset4.next()) table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(10);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(rset4.getObject(1).toString(), pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(10);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Account No : " + rset4.getObject(2).toString(), pFontHeader1);
              table.addCell(phrase);
              while (rset41.next()) table.getDefaultCell().setColspan(10);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(rset41.getString(1), pFontHeader1);
              table.addCell(phrase);

              //  while (rset4.next())

              table.getDefaultCell().setColspan(5);

              try {
                java.text.DateFormat dateFormat =
                    java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

                java.util.Date endDate1 =
                    dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
                java.util.Date endDate11 =
                    dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

                System.out.println("" + endDate1);
                //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
                // pFontHeader);

                //  table.addCell(phrase);

                table.getDefaultCell().setColspan(6);
                phrase =
                    new Phrase(
                        "Period : "
                            + dateFormat.format(endDate11)
                            + " - "
                            + dateFormat.format(endDate1),
                        pFontHeader1);

                table.addCell(phrase);
              } catch (java.text.ParseException psExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), psExec.getMessage());
              }
              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
              // table.addCell(phrase);

              table.getDefaultCell().setColspan(4);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" Date Printed " + datenowSql, pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              //  table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Date", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Patient No.", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Patient Name", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Inv. No.", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Inv.Date", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Inv. Amt.", pFontHeader1);
              table.addCell(phrase);

              phrase = new Phrase("Chq No. ", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Chq. Amt. ", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Amt.Alloc ", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Inv. Bal. ", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setBorderWidth(Rectangle.BOTTOM);
              // table

              while (rset1.next()) {
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(5), "-"), pFontHeader);

                table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(6)),
                        pFontHeader);
                // osBalance1 = osBalance1 + rset1.getDouble(5);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(7), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(8)),
                        pFontHeader);
                // osBalance1 = osBalance1 + rset1.getDouble(5);
                table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(9)),
                        pFontHeader);
                osBalancebf = osBalancebf + rset1.getDouble(9);
                // osBalancebf = osBalance1;
                table.addCell(phrase);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(10)),
                        pFontHeader);
                osBalance1 = osBalance1 + rset1.getDouble(10);
                table.addCell(phrase);
              }
              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(5);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalancebf)),
                      pFontHeader);

              table.addCell(phrase);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance1)),
                      pFontHeader);

              table.addCell(phrase);
              // phrase = new Phrase(" ");

              //     }
              /*   try {


                    java.sql.Statement st31 = connectDB.createStatement();
                    // java.sql.Statement st4 = connectDB.createStatement();
                    java.sql.ResultSet rset2 = st31.executeQuery("select name from pb_notice");

                    // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
                    //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                    while(rset2.next())
                        Messg = rset2.getString(1);

                    com.lowagie.text.HeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                    //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
                    //  headerFoter.ALIGN_CENTER;
                    //  headerFoter.setRight(5);
                    docPdf.setFooter(footer);




                } catch(java.sql.SQLException SqlExec) {

                    javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

                }

              */
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }  // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      int titleFont = 0;
      int bodyFont = 0;
      float Widths = 0;
      float Heights = 0;
      float Margins = 0;

      try {
        connectDB.setAutoCommit(false);

        java.sql.Statement stm1 = connectDB.createStatement();
        java.sql.ResultSet rse1 =
            stm1.executeQuery(
                "select header_font,body_font,width,height,margins from receipt_pref");
        while (rse1.next()) {
          titleFont = rse1.getInt(1);
          bodyFont = rse1.getInt(2);
          Widths = rse1.getFloat(3);
          Heights = rse1.getFloat(4);
          Margins = rse1.getFloat(5);
        }
      } catch (java.sql.SQLException sq) {

        try {
          connectDB.rollback();
        } catch (java.sql.SQLException sql) {
          //   javax.swing.JOptionPane.showMessageDialog(this,sql.getMessage(),"Error
          // Message!",javax.swing.JOptionPane.ERROR_MESSAGE);
        }
        System.out.println(sq.getMessage());
        //   javax.swing.JOptionPane.showMessageDialog(this,sq.getMessage(),
        // "Error",javax.swing.JOptionPane.ERROR_MESSAGE);

      }
      // com.lowagie.text.Font pFontHeader =
      // FontFactory.getFont(System.getProperty("font_type_name"),
      // java.lang.Float.parseFloat(System.getProperty("receiptFontSize")), Font.NORMAL);
      // com.lowagie.text.Font pFontHeader1 =
      // FontFactory.getFont(System.getProperty("font_type_name"),
      // java.lang.Float.parseFloat(System.getProperty("receiptTitleFontSize")), Font.BOLD);
      com.lowagie.text.Font pFontHeader =
          FontFactory.getFont(FontFactory.HELVETICA, bodyFont, Font.NORMAL);
      com.lowagie.text.Font pFontHeader1 =
          FontFactory.getFont(FontFactory.HELVETICA, titleFont, Font.BOLD);

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document(new Rectangle((Widths),
      // Heights),Margins,Margins,Margins,Margins);

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String Address = null;
          String Tel = null;
          String compName = null;
          String Fax = null;
          String Email = null;
          String date = null;

          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.Statement st2x = connectDB.createStatement();

            java.sql.ResultSet rset2x =
                st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
            while (rset2x.next()) {
              ks = rset2x.getObject(1).toString();
            }
            java.sql.ResultSet rset2 =
                st3.executeQuery(
                    "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email||'   '||website,room_no from pb_hospitalprofile");

            // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from
            // pb_hospitalprofile");
            //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
              Address = rset2.getObject(2).toString();
              Tel = rset2.getObject(3).toString();
              Fax = rset2.getObject(5).toString();
              Email = rset2.getObject(6).toString();
            }

            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase(
                        ""
                            + compName
                            + "\n Address: "
                            + Address
                            + "\n Tel: "
                            + Tel
                            + " \n Fax: "
                            + Fax
                            + "\n Email: "
                            + Email
                            + ""),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);

            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          String Messg = null;

          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.ResultSet rset2 = st3.executeQuery("select name from pb_notice");

            while (rset2.next()) {
              Messg = rset2.getObject(1).toString();
              com.lowagie.text.HeaderFooter footer =
                  new com.lowagie.text.HeaderFooter(
                      new Phrase("" + Messg + ""),
                      false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
              // Font.BOLDITALIC,java.awt.Color.blue)));

              docPdf.setFooter(footer);
            }

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          docPdf.open();

          try {

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            for (int j = 0; j < listofStaffNos.length; j++) {
              com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

              int headerwidths[] = {20, 35, 15, 15, 15, 15};

              table.setWidths(headerwidths);

              table.setWidthPercentage((100));

              table.getDefaultCell().setBorder(Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(6);

              Phrase phrase = new Phrase();

              //  table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              System.out.println(listofStaffNos[j]);
              try {
                // -    for (int j = 0; j < listofStaffNos.length; j++) {
                java.sql.Statement st311 = connectDB.createStatement();
                java.sql.Statement st12 = connectDB.createStatement();
                java.sql.Statement st6 = connectDB.createStatement();
                java.sql.Statement st61 = connectDB.createStatement();
                java.sql.Statement st11 = connectDB.createStatement();
                java.sql.Statement st = connectDB.createStatement();
                java.sql.Statement st1 = connectDB.createStatement();
                java.sql.Statement st1d = connectDB.createStatement();
                java.sql.Statement st2 = connectDB.createStatement();
                java.sql.Statement st31 = connectDB.createStatement();
                java.sql.Statement st4 = connectDB.createStatement();
                java.sql.Statement st5 = connectDB.createStatement();

                java.sql.ResultSet rset311 =
                    st311.executeQuery(
                        "select ap.payer_id from ac_debtors ac,ac_scheme_providers ap where ac.dealer = ap.scheme_manager AND ac.invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset31 =
                    st31.executeQuery(
                        "select pc.payee,sp.postal_code||' '||sp.address,sp.tel_main||' '||sp.other_tel,sp.main_fax from ac_schemes sp,ac_debtors pc where pc.payee = sp.scheme_name and pc.invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset4 =
                    st4.executeQuery(
                        "select dealer from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset5 =
                    st5.executeQuery(
                        "select pr.account_no,pr.member_name from hp_patient_register pr,ac_debtors db where db.invoice_no = '"
                            + listofStaffNos[j]
                            + "' and db.admission_no = pr.patient_no");
                java.sql.ResultSet rset =
                    st.executeQuery(
                        "select admission_no,initcap(item) from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rsetTotals =
                    st2.executeQuery(
                        "select sum(credit) from hp_patient_card where invoice_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true");
                java.sql.ResultSet rset12 =
                    st12.executeQuery(
                        "select date from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset11 =
                    st11.executeQuery(
                        "select invoice_no from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "' and invoice_no IS NOT NULL");
                java.sql.ResultSet rset1d =
                    st1d.executeQuery(
                        "select date::date,initcap(service) as service,dosage,reference,debit-credit from hp_patient_card where invoice_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true AND transaction_type not ilike 'Invoice'  AND reference ILIKE 'C%'");

                double osBalance = 0.00;
                double current = 0.00;
                System.out.println(listofStaffNos[j]);
                System.out.println("Step1 Complete");
                while (rset4.next()) {
                  table.getDefaultCell().setColspan(3);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase =
                      new Phrase(
                          "Payer Name: " + dbObject.getDBObject(rset4.getObject(1), "-"),
                          pFontHeader1);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(3);

                  //  while (rset11.next()){
                  //  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(" ", pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);

                  while (rset31.next()) {

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase =
                        new Phrase(
                            "Scheme Name: " + dbObject.getDBObject(rset31.getObject(1), "-"),
                            pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setColspan(3);
                    table.getDefaultCell().setColspan(3);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase =
                        new Phrase(
                            "Address.: " + dbObject.getDBObject(rset31.getObject(2), "-"),
                            pFontHeader);
                    table.addCell(phrase);

                    while (rset12.next()) {
                      table.getDefaultCell().setColspan(3);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase =
                          new Phrase(
                              "Invoice Date.: " + dbObject.getDBObject(rset12.getObject(1), "-"),
                              pFontHeader);
                      table.addCell(phrase);

                      table.getDefaultCell().setColspan(6);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase =
                          new Phrase(
                              "Tel.: " + dbObject.getDBObject(rset31.getObject(3), "-"),
                              pFontHeader);

                      table.addCell(phrase);

                      table.getDefaultCell().setColspan(3);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase =
                          new Phrase(
                              "Fax.: " + dbObject.getDBObject(rset31.getObject(4), "-"),
                              pFontHeader);

                      table.addCell(phrase);
                      while (rset11.next()) {
                        //  table.getDefaultCell().setColspan(1);
                        table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                        table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                        phrase =
                            new Phrase(
                                "Invoice No.: " + dbObject.getDBObject(rset11.getObject(1), "-"),
                                pFontHeader);

                        table.addCell(phrase);

                        table.getDefaultCell().setColspan(3);
                        while (rset5.next()) {

                          table.getDefaultCell().setColspan(3);
                          table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                          // phrase = new Phrase("Member No.", pFontHeader);

                          phrase =
                              new Phrase(
                                  "Member No.: " + dbObject.getDBObject(rset5.getObject(1), "-"),
                                  pFontHeader);

                          table.addCell(phrase);

                          System.out.println("Step4 Complete");

                          while (rset.next()) {

                            table.getDefaultCell().setColspan(3);
                            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                            phrase =
                                new Phrase(
                                    "Patient Name.: "
                                        + dbObject.getDBObject(rset.getObject(2), "-"),
                                    pFontHeader);
                            table.addCell(phrase);
                            //       while (rset5.next()){

                            table.getDefaultCell().setColspan(3);
                            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                            phrase =
                                new Phrase(
                                    "Member Name.: "
                                        + dbObject.getDBObject(rset5.getObject(2), "-"),
                                    pFontHeader);
                            table.addCell(phrase);

                            //          while (rset.next()){
                            table.getDefaultCell().setColspan(3);
                            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                            //   phrase = new Phrase("Member Name  "+rset5.getString(2),
                            // pFontHeader);
                            phrase =
                                new Phrase(
                                    "Patient No.: " + dbObject.getDBObject(rset.getObject(1), "-"),
                                    pFontHeader);

                            table.addCell(phrase);
                          }
                        }
                      }
                    }
                  }
                }

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
                table.getDefaultCell().setBorderWidth(Rectangle.TOP);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Date", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Description", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

                phrase = new Phrase("Qty", pFontHeader1);
                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Ref", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Amount", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Running " + ks, pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                java.lang.Object listofStaffNos1[] = this.getListofStaffNos1(listofStaffNos[j]);

                for (int k = 0; k < listofStaffNos1.length; k++) {
                  double osBalance1 = 0.00;
                  java.sql.ResultSet rset1 =
                      st1.executeQuery(
                          "select date::date,initcap(service) as service,dosage::int,reference,debit-credit from hp_patient_card where invoice_no = '"
                              + listofStaffNos[j]
                              + "' AND paid = true and service not ilike 'Invoice' AND main_service ilike '"
                              + listofStaffNos1[k]
                              + "' AND reference NOT ILIKE 'C%'");

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  table.getDefaultCell().setColspan(6);
                  phrase = new Phrase(listofStaffNos1[k].toString(), pFontHeader1);

                  table.addCell(phrase);

                  while (rset1.next()) {

                    table.getDefaultCell().setColspan(1);
                    //  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                    table.addCell(phrase);
                    table.getDefaultCell().setColspan(1);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                    table.addCell(phrase);
                    table.getDefaultCell().setColspan(1);
                    // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                    int dos = 0;
                    dos = rset1.getInt(3);

                    phrase = new Phrase(java.lang.String.valueOf(dos), pFontHeader);
                    //    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"),
                    // pFontHeader);

                    table.addCell(phrase);

                    table.getDefaultCell().setColspan(1);
                    //   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"), pFontHeader);

                    table.addCell(phrase);

                    table.getDefaultCell().setColspan(1);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset1.getString(5)),
                            pFontHeader);
                    // osBalance = osBalance + rset.getDouble(5);
                    table.addCell(phrase);
                    osBalance = osBalance + rset1.getDouble(5);
                    osBalance1 = osBalance1 + rset1.getDouble(5);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(java.lang.String.valueOf(osBalance)),
                            pFontHeader);
                    //   current = current + osBalance;

                    table.addCell(phrase);
                  }

                  table.getDefaultCell().setColspan(3);
                  phrase = new Phrase("  ", pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  table.getDefaultCell().setColspan(1);
                  phrase = new Phrase("Gross ", pFontHeader11);

                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  table.getDefaultCell().setColspan(1);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalance1)),
                          pFontHeader11);

                  table.addCell(phrase);
                  phrase = new Phrase("  ", pFontHeader);

                  table.addCell(phrase);
                }
                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase("", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                while (rsetTotals.next()) {

                  table.getDefaultCell().setColspan(2);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Invoice Total.", pFontHeader11);

                  table.addCell(phrase);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  table.getDefaultCell().setColspan(1);

                  phrase = new Phrase(" ", pFontHeader);

                  table.addCell(phrase);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalance)),
                          pFontHeader11);

                  table.addCell(phrase);
                }

                while (rset1d.next()) {
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(1), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(2), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(3), "-"), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(4), "-"), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset1d.getString(5)),
                          pFontHeader);
                  table.addCell(phrase);
                  osBalance = osBalance - rset1d.getDouble(5);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalance)),
                          pFontHeader);

                  table.addCell(phrase);
                }

                table.getDefaultCell().setColspan(3);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase("", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase("Total", pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);

                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance)),
                        pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(36);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setColspan(6);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                phrase = new Phrase(" ", pFontHeader1);

                table.addCell(phrase);

                docPdf.add(table);

              } catch (java.sql.SQLException SqlExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), SqlExec.getMessage());
              }
              boolean boolNewPage = docPdf.newPage();
            } // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class FinalDescInvoiceByinvPdf implements java.lang.Runnable {
  java.lang.String MNo = null;
  java.lang.String INV01 = null;
  java.lang.String INV02 = null;
  com.afrisoftech.lib.DBObject dbObject;

  java.lang.String beginDate = null;
  String ks;
  java.lang.String endDate = null;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  //    double osBalance = 0.00;
  //   double current = 0.00;
  //  java.lang.String memNo2Use = null;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.NORMAL);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontHeader11 = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);

  com.lowagie.text.Font pFontHeader2 = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  //  public void FinalPatientInvoicePdf(java.sql.Connection connDb, java.lang.String begindate,
  // java.lang.String endate, java.lang.String combox) {
  public void FinalDescInvoiceByinvPdf(
      java.sql.Connection connDb, java.lang.String inv1, java.lang.String inv2) {

    dbObject = new com.afrisoftech.lib.DBObject();
    connectDB = connDb;

    INV01 = inv1;

    INV02 = inv2;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new MemberStatementPdf().MemberStatementPdf(args[0]);

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf(MNo);

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(100);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      int titleFont = 0;
      int bodyFont = 0;
      float Widths = 0;
      float Heights = 0;
      float Margins = 0;

      try {
        connectDB.setAutoCommit(false);

        java.sql.Statement stm1 = connectDB.createStatement();
        java.sql.ResultSet rse1 =
            stm1.executeQuery(
                "select header_font,body_font,width,height,margins from receipt_pref");
        while (rse1.next()) {
          titleFont = rse1.getInt(1);
          bodyFont = rse1.getInt(2);
          Widths = rse1.getFloat(3);
          Heights = rse1.getFloat(4);
          Margins = rse1.getFloat(5);
        }
      } catch (java.sql.SQLException sq) {

        try {
          connectDB.rollback();
        } catch (java.sql.SQLException sql) {
          //   javax.swing.JOptionPane.showMessageDialog(this,sql.getMessage(),"Error
          // Message!",javax.swing.JOptionPane.ERROR_MESSAGE);
        }
        System.out.println(sq.getMessage());
        //   javax.swing.JOptionPane.showMessageDialog(this,sq.getMessage(),
        // "Error",javax.swing.JOptionPane.ERROR_MESSAGE);

      }
      // com.lowagie.text.Font pFontHeader =
      // FontFactory.getFont(System.getProperty("font_type_name"),
      // java.lang.Float.parseFloat(System.getProperty("receiptFontSize")), Font.NORMAL);
      // com.lowagie.text.Font pFontHeader1 =
      // FontFactory.getFont(System.getProperty("font_type_name"),
      // java.lang.Float.parseFloat(System.getProperty("receiptTitleFontSize")), Font.BOLD);
      com.lowagie.text.Font pFontHeader =
          FontFactory.getFont(FontFactory.HELVETICA, bodyFont, Font.NORMAL);
      com.lowagie.text.Font pFontHeader1 =
          FontFactory.getFont(FontFactory.HELVETICA, titleFont, Font.BOLD);

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document(new Rectangle((Widths),
      // Heights),Margins,Margins,Margins,Margins);

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String Address = null;
          String Tel = null;
          String compName = null;
          String Fax = null;
          String Email = null;
          String date = null;

          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.Statement st2x = connectDB.createStatement();

            java.sql.ResultSet rset2x =
                st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
            while (rset2x.next()) {
              ks = rset2x.getObject(1).toString();
            }
            java.sql.ResultSet rset2 =
                st3.executeQuery(
                    "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email||'   '||website,room_no from pb_hospitalprofile");

            // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from
            // pb_hospitalprofile");
            //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
              Address = rset2.getObject(2).toString();
              Tel = rset2.getObject(3).toString();
              Fax = rset2.getObject(5).toString();
              Email = rset2.getObject(6).toString();
            }

            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase(
                        ""
                            + compName
                            + "\n Address: "
                            + Address
                            + "\n Tel: "
                            + Tel
                            + " \n Fax: "
                            + Fax
                            + "\n Email: "
                            + Email
                            + ""),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);

            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          String Messg = null;

          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.ResultSet rset2 = st3.executeQuery("select name from pb_notice");

            while (rset2.next()) {
              Messg = rset2.getObject(1).toString();
              com.lowagie.text.HeaderFooter footer =
                  new com.lowagie.text.HeaderFooter(
                      new Phrase("" + Messg + ""),
                      false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
              // Font.BOLDITALIC,java.awt.Color.blue)));

              docPdf.setFooter(footer);
            }

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          docPdf.open();

          try {

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            for (int j = 0; j < listofStaffNos.length; j++) {
              com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

              int headerwidths[] = {20, 35, 15, 15, 15, 15};

              table.setWidths(headerwidths);

              table.setWidthPercentage((100));

              table.getDefaultCell().setBorder(Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(6);

              Phrase phrase = new Phrase();

              //  table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              System.out.println(listofStaffNos[j]);
              try {
                // -    for (int j = 0; j < listofStaffNos.length; j++) {
                java.sql.Statement st311 = connectDB.createStatement();
                java.sql.Statement st12 = connectDB.createStatement();
                java.sql.Statement st6 = connectDB.createStatement();
                java.sql.Statement st61 = connectDB.createStatement();
                java.sql.Statement st11 = connectDB.createStatement();
                java.sql.Statement st = connectDB.createStatement();
                java.sql.Statement st1 = connectDB.createStatement();
                java.sql.Statement st1d = connectDB.createStatement();
                java.sql.Statement st2 = connectDB.createStatement();
                java.sql.Statement st31 = connectDB.createStatement();
                java.sql.Statement st4 = connectDB.createStatement();
                java.sql.Statement st5 = connectDB.createStatement();

                java.sql.ResultSet rset311 =
                    st311.executeQuery(
                        "select ap.payer_id from ac_debtors ac,ac_scheme_providers ap where ac.dealer = ap.scheme_manager AND ac.invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset31 =
                    st31.executeQuery(
                        "select pc.payee,sp.postal_code||' '||sp.address,sp.tel_main||' '||sp.other_tel,sp.main_fax from ac_schemes sp,ac_debtors pc where pc.payee = sp.scheme_name and pc.invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset4 =
                    st4.executeQuery(
                        "select dealer from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset5 =
                    st5.executeQuery(
                        "select pr.account_no,pr.member_name from hp_patient_register pr,ac_debtors db where db.invoice_no = '"
                            + listofStaffNos[j]
                            + "' and db.admission_no = pr.patient_no");
                java.sql.ResultSet rset =
                    st.executeQuery(
                        "select admission_no,initcap(item) from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rsetTotals =
                    st2.executeQuery(
                        "select sum(credit) from hp_patient_card where invoice_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true");
                java.sql.ResultSet rset12 =
                    st12.executeQuery(
                        "select date from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset11 =
                    st11.executeQuery(
                        "select invoice_no from ac_debtors where invoice_no = '"
                            + listofStaffNos[j]
                            + "' and invoice_no IS NOT NULL");
                java.sql.ResultSet rset1d =
                    st1d.executeQuery(
                        "select date::date,initcap(service) as service,dosage,reference,debit-credit from hp_patient_card where invoice_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true AND transaction_type not ilike 'Invoice'  AND reference ILIKE 'C%'");

                double osBalance = 0.00;
                double current = 0.00;
                System.out.println(listofStaffNos[j]);
                System.out.println("Step1 Complete");
                while (rset4.next()) {
                  table.getDefaultCell().setColspan(3);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase =
                      new Phrase(
                          "Payer Name: " + dbObject.getDBObject(rset4.getObject(1), "-"),
                          pFontHeader1);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(3);

                  //  while (rset11.next()){
                  //  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(" ", pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);

                  while (rset31.next()) {

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase =
                        new Phrase(
                            "Scheme Name: " + dbObject.getDBObject(rset31.getObject(1), "-"),
                            pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setColspan(3);
                    table.getDefaultCell().setColspan(3);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase =
                        new Phrase(
                            "Address.: " + dbObject.getDBObject(rset31.getObject(2), "-"),
                            pFontHeader);
                    table.addCell(phrase);

                    while (rset12.next()) {
                      table.getDefaultCell().setColspan(3);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase =
                          new Phrase(
                              "Invoice Date.: " + dbObject.getDBObject(rset12.getObject(1), "-"),
                              pFontHeader);
                      table.addCell(phrase);

                      table.getDefaultCell().setColspan(6);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase =
                          new Phrase(
                              "Tel.: " + dbObject.getDBObject(rset31.getObject(3), "-"),
                              pFontHeader);

                      table.addCell(phrase);

                      table.getDefaultCell().setColspan(3);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase =
                          new Phrase(
                              "Fax.: " + dbObject.getDBObject(rset31.getObject(4), "-"),
                              pFontHeader);

                      table.addCell(phrase);
                      while (rset11.next()) {
                        //  table.getDefaultCell().setColspan(1);
                        table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                        table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                        phrase =
                            new Phrase(
                                "Invoice No.: " + dbObject.getDBObject(rset11.getObject(1), "-"),
                                pFontHeader);

                        table.addCell(phrase);

                        table.getDefaultCell().setColspan(3);
                        while (rset5.next()) {

                          table.getDefaultCell().setColspan(3);
                          table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                          // phrase = new Phrase("Member No.", pFontHeader);

                          phrase =
                              new Phrase(
                                  "Member No.: " + dbObject.getDBObject(rset5.getObject(1), "-"),
                                  pFontHeader);

                          table.addCell(phrase);

                          System.out.println("Step4 Complete");

                          while (rset.next()) {

                            table.getDefaultCell().setColspan(3);
                            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                            phrase =
                                new Phrase(
                                    "Patient Name.: "
                                        + dbObject.getDBObject(rset.getObject(2), "-"),
                                    pFontHeader);
                            table.addCell(phrase);
                            //       while (rset5.next()){

                            table.getDefaultCell().setColspan(3);
                            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                            phrase =
                                new Phrase(
                                    "Member Name.: "
                                        + dbObject.getDBObject(rset5.getObject(2), "-"),
                                    pFontHeader);
                            table.addCell(phrase);

                            //          while (rset.next()){
                            table.getDefaultCell().setColspan(3);
                            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                            //   phrase = new Phrase("Member Name  "+rset5.getString(2),
                            // pFontHeader);
                            phrase =
                                new Phrase(
                                    "Patient No.: " + dbObject.getDBObject(rset.getObject(1), "-"),
                                    pFontHeader);

                            table.addCell(phrase);
                          }
                        }
                      }
                    }
                  }
                }

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
                table.getDefaultCell().setBorderWidth(Rectangle.TOP);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Date", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Description", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

                phrase = new Phrase("Qty", pFontHeader1);
                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Ref", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Amount", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Running " + ks, pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                java.lang.Object listofStaffNos1[] = this.getListofStaffNos1(listofStaffNos[j]);

                for (int k = 0; k < listofStaffNos1.length; k++) {
                  double osBalance1 = 0.00;
                  java.sql.ResultSet rset1 =
                      st1.executeQuery(
                          "select date::date,initcap(service) as service,dosage::int,reference,debit-credit from hp_patient_card where invoice_no = '"
                              + listofStaffNos[j]
                              + "' AND paid = true and service not ilike 'Invoice' AND main_service ilike '"
                              + listofStaffNos1[k]
                              + "' AND reference NOT ILIKE 'C%'");

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  table.getDefaultCell().setColspan(6);
                  phrase = new Phrase(listofStaffNos1[k].toString(), pFontHeader1);

                  table.addCell(phrase);

                  while (rset1.next()) {

                    table.getDefaultCell().setColspan(1);
                    //  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                    table.addCell(phrase);
                    table.getDefaultCell().setColspan(1);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                    table.addCell(phrase);
                    table.getDefaultCell().setColspan(1);
                    // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                    int dos = 0;
                    dos = rset1.getInt(3);

                    phrase = new Phrase(java.lang.String.valueOf(dos), pFontHeader);
                    //    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"),
                    // pFontHeader);

                    table.addCell(phrase);

                    table.getDefaultCell().setColspan(1);
                    //   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"), pFontHeader);

                    table.addCell(phrase);

                    table.getDefaultCell().setColspan(1);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset1.getString(5)),
                            pFontHeader);
                    // osBalance = osBalance + rset.getDouble(5);
                    table.addCell(phrase);
                    osBalance = osBalance + rset1.getDouble(5);
                    osBalance1 = osBalance1 + rset1.getDouble(5);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(java.lang.String.valueOf(osBalance)),
                            pFontHeader);
                    //   current = current + osBalance;

                    table.addCell(phrase);
                  }

                  table.getDefaultCell().setColspan(3);
                  phrase = new Phrase("  ", pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  table.getDefaultCell().setColspan(1);
                  phrase = new Phrase("Gross ", pFontHeader11);

                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  table.getDefaultCell().setColspan(1);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalance1)),
                          pFontHeader11);

                  table.addCell(phrase);
                  phrase = new Phrase("  ", pFontHeader);

                  table.addCell(phrase);
                }
                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase("", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                while (rsetTotals.next()) {

                  table.getDefaultCell().setColspan(2);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Invoice Total.", pFontHeader11);

                  table.addCell(phrase);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  table.getDefaultCell().setColspan(1);

                  phrase = new Phrase(" ", pFontHeader);

                  table.addCell(phrase);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalance)),
                          pFontHeader11);

                  table.addCell(phrase);
                }

                while (rset1d.next()) {
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(1), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(2), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(3), "-"), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1d.getObject(4), "-"), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset1d.getString(5)),
                          pFontHeader);
                  table.addCell(phrase);
                  osBalance = osBalance - rset1d.getDouble(5);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalance)),
                          pFontHeader);

                  table.addCell(phrase);
                }

                table.getDefaultCell().setColspan(3);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase("", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase("Total", pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);

                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance)),
                        pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(36);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setColspan(6);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                phrase = new Phrase(" ", pFontHeader1);

                table.addCell(phrase);

                docPdf.add(table);

              } catch (java.sql.SQLException SqlExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), SqlExec.getMessage());
              }
              boolean boolNewPage = docPdf.newPage();
            } // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofStaffNos() {

    java.lang.Object[] listofStaffNos = null;

    java.util.Vector listStaffNoVector = new java.util.Vector(1, 1);

    try {

      java.sql.PreparedStatement pSet1 =
          connectDB.prepareStatement(
              "SELECT invoice_no FROM ac_debtors WHERE invoice_no  BETWEEN ? AND ? AND transaction_type = ? AND payee != ? order by invoice_no");

      pSet1.setString(1, INV01);
      pSet1.setString(2, INV02);
      pSet1.setString(3, "Raise Invoice");
      pSet1.setString(4, "''");
      java.sql.ResultSet rSet1 = pSet1.executeQuery();

      // java.sql.Statement stmt1 = connectDB.createStatement();

      // java.sql.ResultSet rSet1 = stmt1.executeQuery("SELECT distinct patient_no FROM
      // hp_patient_card WHERE date::date BETWEEN '"+beginDate+"' AND '"+endDate+"' AND payment_mode
      // = 'Scheme' order by patient_no");

      while (rSet1.next()) {

        listStaffNoVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofStaffNos = listStaffNoVector.toArray();
    System.out.println("Done list of Staff Nos ...");
    return listofStaffNos;
  }

  public java.lang.Object[] getListofStaffNos1(java.lang.Object InvoiceNo) {

    java.lang.Object[] listofStaffNos = null;

    java.util.Vector listStaffNoVector = new java.util.Vector(1, 1);

    try {

      java.sql.PreparedStatement pSet1 =
          connectDB.prepareStatement(
              "SELECT distinct upper(main_service) FROM hp_patient_card WHERE invoice_no = '"
                  + InvoiceNo
                  + "' and debit <> 0 and main_service is not null and service not ilike 'invoice%' order by upper(main_service)");
      //  pSet1.setString(1,beginDate.toString());
      //  pSet1.setString(2,endDate.toString());
      java.sql.ResultSet rSet1 = pSet1.executeQuery();

      while (rSet1.next()) {

        listStaffNoVector.addElement(dbObject.getDBObject(rSet1.getObject(1).toString(), "-"));
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofStaffNos = listStaffNoVector.toArray();
    System.out.println("Done list of Staff Nos ...");
    return listofStaffNos;
  }
}
Example #16
0
  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          /*    try {

                java.lang.Class.forName("org.postgresql.Driver");

            } catch(java.lang.ClassNotFoundException cnfExec) {

                javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), cnfExec.getMessage());

            }
          */

          String compName = null;
          String date = null;
          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));

            // com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("OP Rev BreakDown - Page: "),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(3);

            int headerwidths[] = {
              50, 20, 30,
            };

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(3);
            Phrase phrase = new Phrase("", pFontHeader);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);
              table.getDefaultCell().setColspan(3);

              phrase =
                  new Phrase(bank.toUpperCase() + "    Revenue Break Down Report(OP)", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);

              phrase =
                  new Phrase(
                      "Period : From "
                          + dateFormat.format(endDate11)
                          + " To "
                          + dateFormat.format(endDate1),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase = new Phrase("Printed On  :" + date, pFontHeader);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }
            // Phrase phrase = new Phrase("Patients List As At:" +endDate, pFontHeader);

            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(2);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);

            phrase = new Phrase("Description", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            //     table.addCell("Reference No.");
            table.getDefaultCell().setColspan(1);
            phrase = new Phrase("Amount KShs.", pFontHeader);
            table.addCell(phrase);

            // phrase = new Phrase("Credit KShs.",pFontHeader);
            // table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            // table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              //  java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              java.sql.Statement st = connectDB.createStatement();

              java.sql.Statement st2 = connectDB.createStatement();

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select UPPER(service),sum(amount) from ac_ledger WHERE date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' AND activity_code ilike '"
                          + bank
                          + "'  AND drawer = 'OP' group by service_type order by service_type ");

              while (rset.next()) {
                table.getDefaultCell().setColspan(2);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);

                //   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                //  phrase = new Phrase(rset.getObject(3).toString(), pFontHeader1);

                //   table.addCell(phrase);

                //   phrase = new Phrase(rset.getObject(4).toString(), pFontHeader1);

                //   table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                //  phrase = new Phrase(new
                // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(1)),pFontHeader);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(2)),
                        pFontHeader1);
                table.addCell(phrase);
                balance = balance + rset.getDouble(2);
                //  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                //  phrase = new  Phrase(new
                // com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(6)),pFontHeader1);
                //  table.addCell(phrase);
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              // while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(balance)),
                      pFontHeader);

              table.addCell(phrase);

              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              // phrase = new Phrase(new
              // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(2)),pFontHeader);

              // table.addCell(phrase);

              // }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class SuppliesVsSalesAllDrugsPdf implements java.lang.Runnable {
  java.lang.String memNo = null;

  java.lang.String memNo1 = null;
  int seq = 0;
  double openingBal = 0.00;
  double closingBal = 0.00;
  double buyingPrice = 0.00;
  com.afrisoftech.lib.DBObject dbObject;

  java.util.Date beginDate = null;

  java.util.Date endDate = null;

  com.lowagie.text.HeaderFooter headerFoter;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  //  java.lang.String memNo2Use = null;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.BOLD);
  com.lowagie.text.Font pFontHeader11 = FontFactory.getFont(FontFactory.HELVETICA, 11, Font.BOLD);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  //  public void FinalPatientInvoicePdf(java.sql.Connection connDb, java.lang.String begindate,
  // java.lang.String endate, java.lang.String combox) {
  public void SuppliesVsSalesAllDrugsPdf(
      java.sql.Connection connDb,
      java.util.Date begindate,
      java.util.Date endate,
      java.lang.String combox) {

    dbObject = new com.afrisoftech.lib.DBObject();

    memNo1 = combox;
    // memNo = combox1;
    connectDB = connDb;

    beginDate = begindate;

    endDate = endate;
    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new MemberStatementPdf().MemberStatementPdf(args[0]);

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf(memNo);

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(100);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      double osBalanceAmt = 0.00;
      double osBalanceQty = 0.00;
      double osBalanceQtybf = 0.00;
      double osBalanceAmtbf = 0.00;
      double ClosingQtyBalance = 0.00;
      double ClosingAmtBalance = 0.00;
      double osBalanceQty1 = 0.00;
      double osBalanceQty13 = 0.00;
      double osBalanceQty14 = 0.00;
      double osBalanceAmt1 = 0.00;
      double osBalanceAmt12 = 0.00;
      double current = 0.00;

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          /*  try {


                  java.sql.Statement st3 = connectDB.createStatement();
                  java.sql.Statement st4 = connectDB.createStatement();
                    // java.sql.ResultSet rset2 = st3.executeQuery("select name from pb_notice");

                  java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
               //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                  while(rset2.next())
                      Messg = rset2.getObject(1).toString();



                //  while(rset4.next())
                  //    date = rset4.getObject(1).toString();

                 // com.lowagie.textHeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                    headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
                //  headerFoter.ALIGN_CENTER;
                   headerFoter.setRight(5);


              } catch(java.sql.SQLException SqlExec) {

                  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

              }

          */
          /*
           try {


                java.sql.Statement st3 = connectDB.createStatement();
                java.sql.Statement st4 = connectDB.createStatement();
                   java.sql.ResultSet rset2 = st3.executeQuery("select name from pb_notice");

               // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
             //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                while(rset2.next())
                    Messg = rset2.getObject(1).toString();



              //  while(rset4.next())
                //    date = rset4.getObject(1).toString();

                com.lowagie.text.HeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
              //  headerFoter.ALIGN_CENTER;
               //  headerFoter.setRight(5);
                docPdf.setFooter(footer);




            } catch(java.sql.SQLException SqlExec) {

                javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

            }
          */
          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(7);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) table1.getDefaultCell().setColspan(7);

              table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader11);
              table1.addCell(phrase);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          //  } catch(java.io.FileNotFoundException fnfExec) {

          //  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
          // fnfExec.getMessage());

          /// }
          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(5);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {10, 40, 15, 15, 20};

            table.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            table.setHeaderRows(3);
            //  }
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(5);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st111 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st1q = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.Statement st41 = connectDB.createStatement();
              java.sql.Statement st5 = connectDB.createStatement();
              java.sql.ResultSet rset3 =
                  st3.executeQuery(
                      "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      "select '-' as sno, item,sum(qty)  ,sum(purchases),sum(sales),case when sum(sales) > 0 then sum(sales)*-1 else sum(purchases) end as balance  from drug_movt where date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' and qty > 0 group by item order by item"); // UNION ALL SELECT
              // trans_date,store_name,user_name,issuing,total from st_sub_stores where (sub_store =
              // 'Pharmacy' OR sub_store = 'IP Pharmacy') and item ilike '"+memNo+"' AND trans_date
              // BETWEEN '"+beginDate+"' AND '"+endDate+"'");
              java.sql.ResultSet rset11 =
                  st11.executeQuery(
                      "select sum(purchases),sum(sales) from drug_movt"); // UNION ALL SELECT
              // trans_date,store_name,user_name,issuing,total from st_sub_stores where (sub_store =
              // 'Pharmacy' OR sub_store = 'IP Pharmacy') and item ilike '"+memNo+"' AND trans_date
              // BETWEEN '"+beginDate+"' AND '"+endDate+"'");
              // java.sql.ResultSet rset111 = st111.executeQuery("select sum(issuing),sum(amount)
              // from st_sub_stores where item ilike '"+memNo1+"' and sub_store ilike '"+memNo+"%'
              // AND date BETWEEN '"+beginDate+"' AND '"+endDate+"'");// UNION ALL SELECT
              // trans_date,store_name,user_name,issuing,total from st_sub_stores where (sub_store =
              // 'Pharmacy' OR sub_store = 'IP Pharmacy') and item ilike '"+memNo+"' AND trans_date
              // BETWEEN '"+beginDate+"' AND '"+endDate+"'");
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP | Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(5);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(" ", pFontHeader11);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(5);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase =
                  new Phrase(
                      "Drug Movement(Supplies Vs Sales) for all stockables items", pFontHeader11);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);

              try {
                java.text.DateFormat dateFormat =
                    java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

                java.util.Date endDate1 =
                    dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
                java.util.Date endDate11 =
                    dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

                System.out.println("" + endDate1);
                //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
                // pFontHeader);

                //  table.addCell(phrase);

                phrase =
                    new Phrase(
                        "Period : "
                            + dateFormat.format(endDate11)
                            + " - "
                            + dateFormat.format(endDate1),
                        pFontHeader1);

                table.addCell(phrase);
              } catch (java.text.ParseException psExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), psExec.getMessage());
              }
              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
              // table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Date " + datenowSql, pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("SNo.", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Item", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Qty", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Purchases.", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Sales", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              // table
              while (rset1.next()) {
                seq = seq + 1;
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("" + seq + ".", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader);
                osBalanceQty13 = osBalanceQty13 + rset1.getDouble(3);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset1.getString(4)),
                        pFontHeader);
                osBalanceQty1 = osBalanceQty1 + rset1.getDouble(4);
                table.addCell(phrase);
                phrase = new Phrase(dbObject.getDBObject(rset1.getObject(5), "0"), pFontHeader);
                osBalanceQty14 = osBalanceQty14 + rset1.getDouble(5);
                table.addCell(phrase);
                /*

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(6)),pFontHeader);
                osBalanceAmt1 = osBalanceAmt1 + rset1.getDouble(5);
                 osBalanceAmt12 = osBalanceAmt12 + rset1.getDouble(6);
                table.addCell(phrase);
                */
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("TOTAL", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceQty13)),
                      pFontHeader);

              table.addCell(phrase);

              // phrase = new Phrase(" ");

              // table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceQty1)),
                      pFontHeader);

              // phrase = new Phrase(" ",pFontHeader);
              // phrase = new Phrase(" ",pFontHeader);

              table.addCell(phrase);

              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceQty14)),
                      pFontHeader);

              // phrase = new Phrase(" ",pFontHeader);
              // phrase = new Phrase(" ",pFontHeader);

              table.addCell(phrase);
              /*
                table.getDefaultCell().setColspan(3);

                 table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                 phrase = new Phrase("Totals", pFontHeader);

                 table.addCell(phrase);

                 table.getDefaultCell().setColspan(2);

                 table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              */
              while (rset11.next()) {
                /*
                // phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf((osBalanceQtybf + osBalanceQty) - osBalanceQty1)),pFontHeader);
                //  phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(closingBal+osBalanceQty)),pFontHeader);
                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset11.getString(1)),pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset11.getString(2)),pFontHeader);

                //  phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf((closingBal+osBalanceQty)*buyingPrice)),pFontHeader);

                table.addCell(phrase);
                */
              }
              /*
                                   try {


                  java.sql.Statement st31 = connectDB.createStatement();
                 // java.sql.Statement st4 = connectDB.createStatement();
                     java.sql.ResultSet rset2 = st31.executeQuery("select name from pb_notice");

                 // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
               //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                  while(rset2.next())
                      Messg = rset2.getString(1);

                  com.lowagie.text.HeaderFooter footer = new com.lowagie.text.HeaderFooter(new Phrase(""+Messg+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));

                  //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);// FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14, Font.BOLDITALIC,java.awt.Color.blue)));
                //  headerFoter.ALIGN_CENTER;
                 //  headerFoter.setRight(5);
                  docPdf.setFooter(footer);




              } catch(java.sql.SQLException SqlExec) {

                  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), SqlExec.getMessage());

              }
                           */
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }  // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofStaffNos() {

    java.lang.Object[] listofStaffNos = null;

    java.util.Vector listStaffNoVector = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT item FROM drug_movt  WHERE date::date BETWEEN '"
                  + beginDate
                  + "' AND '"
                  + endDate
                  + "'");

      while (rSet1.next()) {

        listStaffNoVector.addElement(rSet1.getObject(1).toString());
        System.out.println("Item is " + rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofStaffNos = listStaffNoVector.toArray();
    System.out.println("Done list of Staff Nos ...");
    return listofStaffNos;
  }
}
public class DeliveriesMonthlyPdf implements java.lang.Runnable {

  java.util.Date beginDate = null;
  com.afrisoftech.lib.DBObject dbObject;
  java.util.Date endDate = null;
  String ks;
  int numberSeq = 0;
  public static java.sql.Connection connectDB = null;
  public java.lang.String dbUserName = null;
  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;
  boolean threadCheck = true;
  java.lang.Thread threadSample;
  //// java.awt.Desktop deskTop = Desktop.getDesktop();
  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.NORMAL);
  com.lowagie.text.Font pFontHeader2 = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();
  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();
  java.lang.Process prThread;

  public DeliveriesMonthlyPdf(
      java.sql.Connection connDb, java.util.Date begindate, java.util.Date endate) {
    dbObject = new com.afrisoftech.lib.DBObject();
    connectDB = connDb;
    beginDate = begindate;
    endDate = endate;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {
    //		new MemberListPdf().MemberListPdf();
  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(200);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      //  com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document(PageSize.A3.rotate());

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String distName = null;
          String regiName = null;
          String date = null;
          try {

            // java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery(
                    "SELECT hospital_name,rep_currency,district_branch,region from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
              ks = rset2.getString(2);
              distName = rset2.getObject(3).toString();
              regiName = rset2.getObject(4).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase(""),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));

            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            // headerFoter.setRight(5);
            // docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Page: "),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(17);

            int headerwidths[] = {7, 10, 20, 7, 12, 7, 7, 12, 12, 10, 7, 7, 7, 7, 20, 12, 10};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(17);

            Phrase phrase = new Phrase("", pFontHeader);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());

              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              com.afrisoftech.lib.DateFormatter dateFormatter =
                  new com.afrisoftech.lib.DateFormatter(
                      dateFormat.parse(endDate.toLocaleString()), "MMMM");

              java.lang.String monthString = dateFormatter.getDateString();

              com.afrisoftech.lib.DateFormatter dateFormatters =
                  new com.afrisoftech.lib.DateFormatter(
                      dateFormat.parse(endDate.toLocaleString()), "yyyy");

              java.lang.String yearString = dateFormatters.getDateString();
              System.out.println("" + endDate1);

              table.getDefaultCell().setColspan(17);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

              phrase = new Phrase("MONTHLY RETURNS ON DELIVERIES", pFontHeader2);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(5);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

              phrase = new Phrase("HOSPITAL : " + compName, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("DISTRICT : " + distName, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(5);
              phrase = new Phrase("REGION : " + regiName, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("MONTH : " + monthString, pFontHeader);

              table.addCell(phrase);

              phrase = new Phrase("YEAR : " + yearString, pFontHeader);

              table.addCell(phrase);

            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

            table.getDefaultCell().setColspan(10);
            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.RIGHT | Rectangle.LEFT);

            table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(4);
            phrase = new Phrase("++ Outcome of Delivery", pFontHeader1);
            table.addCell(phrase);
            table.getDefaultCell().setColspan(3);
            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(10);
            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.RIGHT | Rectangle.LEFT);

            table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(2);
            phrase = new Phrase("Single Birth", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Multiple Birth", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(3);
            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(1);

            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.RIGHT | Rectangle.LEFT);
            phrase = new Phrase("No.", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Inpatient Number", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Address * \n (Town/Residence)", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Age", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Occupation", pFontHeader1);
            table.addCell(phrase);
            table.getDefaultCell().setRunDirection(0);
            phrase = new Phrase("Parity", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Duration of Pregnancy (Weeks)", pFontHeader1);
            table.addCell(phrase);
            phrase = new Phrase("Date of Admission", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Date of Discharge", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("+ Type of Delivery", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("M", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("F", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("M", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("F", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Complications of Pregnancy", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("**Outcome of Admission", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Cost of Treatment", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            //
            double osBalance = 0.00;
            try {

              java.lang.Object[] listofAct = this.getListofActivities();

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              System.out.println(listofAct.length);

              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st33 = connectDB.createStatement();

              java.sql.Statement st31 = connectDB.createStatement();
              for (int i = 0; i < listofAct.length; i++) {
                String outComeSingle = "-";
                String outComeTwins = "-";
                String infantState = "-";
                String babyGender = "-";
                String infantState1 = "-";
                String babyGender1 = "-";
                String parity = "-";

                int ages = 0;
                java.sql.ResultSet rset =
                    st11.executeQuery(
                        "SELECT patient_no,address||' '||residence,ROUND(pat_age),occupation,'','',date_admitted,discharge_date::date,'','','','','',diagnosis1,transaction_type,balance FROM hp_admission WHERE patient_no = '"
                            + listofAct[i]
                            + "' AND discharge_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date AND discharge = true AND diagnosed = true");
                java.sql.ResultSet rset1 =
                    st22.executeQuery(
                        "SELECT DISTINCT duration_of_preg,delivery_method,birth_complications FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date");
                java.sql.ResultSet rset2 =
                    st.executeQuery(
                        "SELECT DISTINCT state_of_infant_at_birth,baby_gender FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date AND type_of_birth ilike 'Single'");
                java.sql.ResultSet rset3 =
                    st33.executeQuery(
                        "SELECT DISTINCT state_of_infant_at_birth,baby_gender FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date AND type_of_birth ilike 'Twins'");
                java.sql.ResultSet rset31 =
                    st31.executeQuery(
                        "SELECT DISTINCT parity FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date");
                while (rset31.next()) {
                  parity = dbObject.getDBObject(rset31.getObject(1), "-");
                }
                while (rset2.next()) {
                  infantState = rset2.getString(1);
                  babyGender = rset2.getString(2);
                  if (infantState.equalsIgnoreCase("Live Birth")) {
                    outComeSingle = "A";
                  } else {
                    outComeSingle = "D";
                  }
                }

                while (rset3.next()) {
                  infantState1 = rset3.getString(1);
                  babyGender1 = rset3.getString(2);
                  if (infantState1.equalsIgnoreCase("Both Alive")) {
                    outComeTwins = "AA";
                  } else {
                    if (infantState1.equalsIgnoreCase("Both Dead")) {
                      outComeTwins = "DD";
                    } else {
                      if (infantState1.equalsIgnoreCase("One Dead")) {
                        outComeTwins = "AD";
                      }
                    }
                  }
                }

                while (rset.next()) {
                  while (rset1.next()) {
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                    table.getDefaultCell().setColspan(1);
                    numberSeq = numberSeq + 1;
                    phrase = new Phrase("" + numberSeq + "   ", pFontHeader);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(2), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                    ages = rset.getInt(3);
                    if (ages < 1) {
                      phrase = new Phrase("<1", pFontHeader1);

                      table.addCell(phrase);
                    } else {
                      //     phrase = new Phrase(dbObject.getDBObject(rset.getObject(3), "-"),
                      // pFontHeader1);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2IntCurrency()
                                  .Format2IntCurrency(java.lang.String.valueOf(ages)),
                              pFontHeader1);

                      table.addCell(phrase);
                    }

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(4), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(parity, pFontHeader1);
                    table.addCell(phrase);

                    phrase =
                        new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader1);
                    table.addCell(phrase);

                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(7), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(8), "-"), pFontHeader1);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase =
                        new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader1);
                    table.addCell(phrase);
                    if (babyGender.startsWith("M")) {
                      phrase = new Phrase(outComeSingle, pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                    } else {
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(outComeSingle, pFontHeader1);
                      table.addCell(phrase);
                    }
                    if (babyGender.startsWith("M")) {
                      phrase = new Phrase(outComeTwins, pFontHeader1);
                      table.addCell(phrase);

                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                    } else {
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);

                      phrase = new Phrase(outComeTwins, pFontHeader1);
                      table.addCell(phrase);
                    }
                    phrase =
                        new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader1);
                    table.addCell(phrase);
                    phrase =
                        new Phrase(dbObject.getDBObject(rset.getObject(15), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(dbObject.getDBObject(rset.getObject(16), "-"), pFontHeader1);
                    table.addCell(phrase);
                    /*  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(15), "-"), pFontHeader1);
                    table.addCell(phrase);
                     */
                  }
                }
              }

              table.getDefaultCell().setColspan(17);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("*    Address             ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase =
                  new Phrase(
                      "= This does not mean birth-place,unless the latter is the usual residence. It also excludes temporary residence of less than one month duration",
                      pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("+   Type of Delivery             ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase =
                  new Phrase(
                      "= N-normal; N.E-Normal with Episiotomy; F.E.-Ferceps with Episiotomy; M-Surgical Manipulation; C.S.-Caesarian Section; An-Any Other",
                      pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("++    Outcome of Delivery   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase =
                  new Phrase(
                      "= A-Alive; D-Foetal Death; AA-Both Alive; DD-Both Dead; AD-One Dead",
                      pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("**    Outcome of Admission   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase = new Phrase("= Discharge, Transferred, Died, Abscond", pFontHeader);
              table.addCell(phrase);

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofActivities() {

    java.lang.Object[] listofActivities = null;

    java.util.Vector listActVector = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT mother_serial_no FROM rh.post_natal_services WHERE service_date::date BETWEEN '"
                  + beginDate
                  + "' AND '"
                  + endDate
                  + "'");

      while (rSet1.next()) {
        listActVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofActivities = listActVector.toArray();
    System.out.println("Done list of activities ...");
    return listofActivities;
  }
}
public class IpUnfinalisedInvPdf implements java.lang.Runnable {

  java.util.Date beginDate = null;

  java.util.Date endDate = null;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  java.lang.Thread threadSample;
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);
  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontNum = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.NORMAL);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void IpUnfinalisedInvPdf(
      java.sql.Connection connDb, java.util.Date begindate, java.util.Date endate) {

    connectDB = connDb;
    beginDate = begindate;
    endDate = endate;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new GlTransactPdf().GlTransactPdf();

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(500);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {
    java.sql.ResultSet rsetTotals1 = null;

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) compName = rset2.getObject(1).toString();

            while (rset4.next()) date = rset4.getObject(1).toString();

            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Un Finalised Invoices List - Page: ", pFontHeader1),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          double balance = 0.00;

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(4);

            int headerwidths[] = {15, 30, 25, 15};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(2);

            Phrase phrase =
                new Phrase(
                    "In Patient Unfinalised Inv : ",
                    com.lowagie.text.FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10));

            table.addCell(phrase);

            table.getDefaultCell().setColspan(2);

            phrase =
                new Phrase(
                    "Printed On : " + date,
                    com.lowagie.text.FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10));

            table.addCell(phrase);
            table.getDefaultCell().setColspan(1);

            // phrase = new Phrase("Name", pFontHeader);

            // table.addCell(phrase);

            phrase = new Phrase("Date", pFontHeader);

            table.addCell(phrase);

            phrase = new Phrase("No.", pFontHeader);

            table.addCell(phrase);

            phrase = new Phrase("Name", pFontHeader);

            table.addCell(phrase);

            phrase = new Phrase("Amount", pFontHeader);

            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              // java.lang.Object[] listofAct = this.getListofActivities();
              java.lang.Object[] listofAct1 = this.getListofActivities1();

              java.sql.Statement st21 = connectDB.createStatement();

              //  java.sql.ResultSet rsetTotals = st21.executeQuery("SELECT sum(amount) from
              // op_unfinalised_inv  where trans_date BETWEEN '"+beginDate+"' AND '"+endDate+"'");

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              //  System.out.println(listofAct.length);
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st22 = connectDB.createStatement();

              for (int k = 0; k < listofAct1.length; k++) {
                java.sql.ResultSet rset1 =
                    st2.executeQuery(
                        "SELECT patient_no,sum(debit-credit) from hp_patient_card WHERE patient_no ILIKE '"
                            + listofAct1[k].toString()
                            + "%' and invoice_no NOT iLike 'O%' OR invoice_no NOT iLike 'I%' AND date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' group by patient_no");
                java.sql.ResultSet rset2 =
                    st22.executeQuery(
                        "SELECT patient_name from hp_admission WHERE patient_no ILIKE '"
                            + listofAct1[k].toString()
                            + "%'");

                /*    table.getDefaultCell().setColspan(1);
                   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                   phrase = new Phrase(" ",pFontHeader);
                   table.addCell(phrase);
                   table.getDefaultCell().setColspan(3);
                   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  // phrase = new Phrase(listofAct1[k].toString(),pFontHeader);
                 //  table.addCell(phrase);

                   phrase = new Phrase("",pFontHeader);
                   table.addCell(phrase);
                */
                while (rset1.next()) {
                  while (rset2.next()) {
                    table.getDefaultCell().setColspan(1);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(" ", pFontNum);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(rset1.getObject(1).toString(), pFontNum);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(rset2.getString(1), pFontNum);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset1.getString(2)),
                            pFontHeader1);
                    table.addCell(phrase);
                    balance = balance + rset1.getDouble(2);
                  }
                }
              }
              // while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              //  phrase = new Phrase(new
              // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(1)),
              // pFontHeader);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(balance)),
                      pFontHeader);

              table.addCell(phrase);
              //  }

              // }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
  /*
  public java.lang.Object[] getListofActivities() {

      java.lang.Object[] listofActivities = null;

      java.util.Vector listActVector = new java.util.Vector(1,1);


      try {

          //    java.sql.Connection connDB = java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

          java.sql.Statement stmt1 = connectDB.createStatement();

          java.sql.ResultSet rSet1 = stmt1.executeQuery("SELECT DISTINCT sub_cat_code FROM st_stock_item order by sub_cat_code");

          while (rSet1.next()) {

              listActVector.addElement(rSet1.getObject(1).toString());

          }

      }catch (java.sql.SQLException sqlExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());

      }

      listofActivities = listActVector.toArray();
      System.out.println("Done list of activities ...");
      return listofActivities;
  }*/

  public java.lang.Object[] getListofActivities1() {

    java.lang.Object[] listofActivities1 = null;

    java.util.Vector listActVector1 = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT distinct patient_no from hp_patient_card where date BETWEEN '"
                  + beginDate
                  + "' AND '"
                  + endDate
                  + "' and invoice_no NOT iLike 'O%' OR invoice_no NOT iLike 'I%'");

      while (rSet1.next()) {

        listActVector1.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofActivities1 = listActVector1.toArray();
    System.out.println("Done list of activities ...");
    return listofActivities1;
  }
}
  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      //  com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document(PageSize.A3.rotate());

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String distName = null;
          String regiName = null;
          String date = null;
          try {

            // java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery(
                    "SELECT hospital_name,rep_currency,district_branch,region from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
              ks = rset2.getString(2);
              distName = rset2.getObject(3).toString();
              regiName = rset2.getObject(4).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase(""),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));

            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            // headerFoter.setRight(5);
            // docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Page: "),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(17);

            int headerwidths[] = {7, 10, 20, 7, 12, 7, 7, 12, 12, 10, 7, 7, 7, 7, 20, 12, 10};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(17);

            Phrase phrase = new Phrase("", pFontHeader);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());

              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              com.afrisoftech.lib.DateFormatter dateFormatter =
                  new com.afrisoftech.lib.DateFormatter(
                      dateFormat.parse(endDate.toLocaleString()), "MMMM");

              java.lang.String monthString = dateFormatter.getDateString();

              com.afrisoftech.lib.DateFormatter dateFormatters =
                  new com.afrisoftech.lib.DateFormatter(
                      dateFormat.parse(endDate.toLocaleString()), "yyyy");

              java.lang.String yearString = dateFormatters.getDateString();
              System.out.println("" + endDate1);

              table.getDefaultCell().setColspan(17);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

              phrase = new Phrase("MONTHLY RETURNS ON DELIVERIES", pFontHeader2);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(5);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

              phrase = new Phrase("HOSPITAL : " + compName, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("DISTRICT : " + distName, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(5);
              phrase = new Phrase("REGION : " + regiName, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("MONTH : " + monthString, pFontHeader);

              table.addCell(phrase);

              phrase = new Phrase("YEAR : " + yearString, pFontHeader);

              table.addCell(phrase);

            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);

            table.getDefaultCell().setColspan(10);
            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.RIGHT | Rectangle.LEFT);

            table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(4);
            phrase = new Phrase("++ Outcome of Delivery", pFontHeader1);
            table.addCell(phrase);
            table.getDefaultCell().setColspan(3);
            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(10);
            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.RIGHT | Rectangle.LEFT);

            table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(2);
            phrase = new Phrase("Single Birth", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Multiple Birth", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(3);
            phrase = new Phrase("", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(1);

            table
                .getDefaultCell()
                .setBorder(Rectangle.BOTTOM | Rectangle.TOP | Rectangle.RIGHT | Rectangle.LEFT);
            phrase = new Phrase("No.", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Inpatient Number", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Address * \n (Town/Residence)", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Age", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Occupation", pFontHeader1);
            table.addCell(phrase);
            table.getDefaultCell().setRunDirection(0);
            phrase = new Phrase("Parity", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Duration of Pregnancy (Weeks)", pFontHeader1);
            table.addCell(phrase);
            phrase = new Phrase("Date of Admission", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Date of Discharge", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("+ Type of Delivery", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("M", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("F", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("M", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("F", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Complications of Pregnancy", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("**Outcome of Admission", pFontHeader1);
            table.addCell(phrase);

            phrase = new Phrase("Cost of Treatment", pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            //
            double osBalance = 0.00;
            try {

              java.lang.Object[] listofAct = this.getListofActivities();

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              System.out.println(listofAct.length);

              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st33 = connectDB.createStatement();

              java.sql.Statement st31 = connectDB.createStatement();
              for (int i = 0; i < listofAct.length; i++) {
                String outComeSingle = "-";
                String outComeTwins = "-";
                String infantState = "-";
                String babyGender = "-";
                String infantState1 = "-";
                String babyGender1 = "-";
                String parity = "-";

                int ages = 0;
                java.sql.ResultSet rset =
                    st11.executeQuery(
                        "SELECT patient_no,address||' '||residence,ROUND(pat_age),occupation,'','',date_admitted,discharge_date::date,'','','','','',diagnosis1,transaction_type,balance FROM hp_admission WHERE patient_no = '"
                            + listofAct[i]
                            + "' AND discharge_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date AND discharge = true AND diagnosed = true");
                java.sql.ResultSet rset1 =
                    st22.executeQuery(
                        "SELECT DISTINCT duration_of_preg,delivery_method,birth_complications FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date");
                java.sql.ResultSet rset2 =
                    st.executeQuery(
                        "SELECT DISTINCT state_of_infant_at_birth,baby_gender FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date AND type_of_birth ilike 'Single'");
                java.sql.ResultSet rset3 =
                    st33.executeQuery(
                        "SELECT DISTINCT state_of_infant_at_birth,baby_gender FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date AND type_of_birth ilike 'Twins'");
                java.sql.ResultSet rset31 =
                    st31.executeQuery(
                        "SELECT DISTINCT parity FROM rh.post_natal_services WHERE mother_serial_no = '"
                            + listofAct[i]
                            + "' AND service_date::date BETWEEN '"
                            + beginDate
                            + "'::date AND '"
                            + endDate
                            + "'::date");
                while (rset31.next()) {
                  parity = dbObject.getDBObject(rset31.getObject(1), "-");
                }
                while (rset2.next()) {
                  infantState = rset2.getString(1);
                  babyGender = rset2.getString(2);
                  if (infantState.equalsIgnoreCase("Live Birth")) {
                    outComeSingle = "A";
                  } else {
                    outComeSingle = "D";
                  }
                }

                while (rset3.next()) {
                  infantState1 = rset3.getString(1);
                  babyGender1 = rset3.getString(2);
                  if (infantState1.equalsIgnoreCase("Both Alive")) {
                    outComeTwins = "AA";
                  } else {
                    if (infantState1.equalsIgnoreCase("Both Dead")) {
                      outComeTwins = "DD";
                    } else {
                      if (infantState1.equalsIgnoreCase("One Dead")) {
                        outComeTwins = "AD";
                      }
                    }
                  }
                }

                while (rset.next()) {
                  while (rset1.next()) {
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                    table.getDefaultCell().setColspan(1);
                    numberSeq = numberSeq + 1;
                    phrase = new Phrase("" + numberSeq + "   ", pFontHeader);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(2), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                    ages = rset.getInt(3);
                    if (ages < 1) {
                      phrase = new Phrase("<1", pFontHeader1);

                      table.addCell(phrase);
                    } else {
                      //     phrase = new Phrase(dbObject.getDBObject(rset.getObject(3), "-"),
                      // pFontHeader1);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2IntCurrency()
                                  .Format2IntCurrency(java.lang.String.valueOf(ages)),
                              pFontHeader1);

                      table.addCell(phrase);
                    }

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(4), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(parity, pFontHeader1);
                    table.addCell(phrase);

                    phrase =
                        new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader1);
                    table.addCell(phrase);

                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(7), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(8), "-"), pFontHeader1);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase =
                        new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader1);
                    table.addCell(phrase);
                    if (babyGender.startsWith("M")) {
                      phrase = new Phrase(outComeSingle, pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                    } else {
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(outComeSingle, pFontHeader1);
                      table.addCell(phrase);
                    }
                    if (babyGender.startsWith("M")) {
                      phrase = new Phrase(outComeTwins, pFontHeader1);
                      table.addCell(phrase);

                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                    } else {
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);

                      phrase = new Phrase(outComeTwins, pFontHeader1);
                      table.addCell(phrase);
                    }
                    phrase =
                        new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"), pFontHeader1);
                    table.addCell(phrase);
                    phrase =
                        new Phrase(dbObject.getDBObject(rset.getObject(15), "-"), pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(dbObject.getDBObject(rset.getObject(16), "-"), pFontHeader1);
                    table.addCell(phrase);
                    /*  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(15), "-"), pFontHeader1);
                    table.addCell(phrase);
                     */
                  }
                }
              }

              table.getDefaultCell().setColspan(17);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("*    Address             ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase =
                  new Phrase(
                      "= This does not mean birth-place,unless the latter is the usual residence. It also excludes temporary residence of less than one month duration",
                      pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("+   Type of Delivery             ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase =
                  new Phrase(
                      "= N-normal; N.E-Normal with Episiotomy; F.E.-Ferceps with Episiotomy; M-Surgical Manipulation; C.S.-Caesarian Section; An-Any Other",
                      pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("++    Outcome of Delivery   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase =
                  new Phrase(
                      "= A-Alive; D-Foetal Death; AA-Both Alive; DD-Both Dead; AD-One Dead",
                      pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);
              phrase = new Phrase("**    Outcome of Admission   ", pFontHeader);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(12);
              phrase = new Phrase("= Discharge, Transferred, Died, Abscond", pFontHeader);
              table.addCell(phrase);

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class CafeteriaStatementAccDetailPdf implements java.lang.Runnable {

  java.lang.String memNo = null;
  java.lang.String memNo1 = null;
  com.afrisoftech.lib.DBObject dbObject;
  java.util.Date beginDate = null;
  java.util.Date endDate = null;
  com.lowagie.text.HeaderFooter headerFoter;
  public static java.sql.Connection connectDB = null;
  public java.lang.String dbUserName = null;
  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;
  boolean threadCheck = true;
  String ks;
  //  java.lang.String memNo2Use = null;
  java.lang.Thread threadSample;
  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);
  com.lowagie.text.Font pFontHeader11 = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();
  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();
  java.lang.Process prThread;

  //  public void FinalPatientInvoicePdf(java.sql.Connection connDb, java.lang.String begindate,
  // java.lang.String endate, java.lang.String combox) {
  public void StatementAccDetailPdf(
      java.sql.Connection connDb,
      java.util.Date begindate,
      java.util.Date endate,
      java.lang.String combox1,
      java.lang.String combox) {

    dbObject = new com.afrisoftech.lib.DBObject();

    memNo1 = combox1;
    memNo = combox;

    connectDB = connDb;

    beginDate = begindate;

    endDate = endate;
    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {
    //		new MemberStatementPdf().MemberStatementPdf(args[0]);
  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf(memNo);

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(100);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document(PageSize.A4.rotate());
      double osBalance1 = 0.00;
      double osBalance = 0.00;
      double current = 0.00;
      double osBalancebf = 0.00;
      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          String Messg = null;

          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(7);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st2x = connectDB.createStatement();

              java.sql.ResultSet rset2x =
                  st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
              while (rset2x.next()) {
                ks = rset2x.getObject(1).toString();
              }
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) {
                table1.getDefaultCell().setColspan(7);

                table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader11);
                table1.addCell(phrase);
              }

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          //  } catch(java.io.FileNotFoundException fnfExec) {

          //  javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
          // fnfExec.getMessage());

          /// }
          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(9);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {12, 10, 28, 11, 14, 12, 14, 14, 15};

            table.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            table.setHeaderRows(8);
            //  }
            table.setWidthPercentage((100));

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(9);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table.getDefaultCell().setColspan(1);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              double Debit = 0.00;
              double Credit = 0.00;
              java.sql.Statement st22 = connectDB.createStatement();
              java.sql.Statement st11 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st4 = connectDB.createStatement();
              java.sql.Statement st41 = connectDB.createStatement();
              java.sql.Statement st5 = connectDB.createStatement();
              java.sql.Statement st22D = connectDB.createStatement();
              java.sql.ResultSet rset3 =
                  st3.executeQuery(
                      "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
              java.sql.ResultSet rset4 =
                  st4.executeQuery(
                      "select scheme_name,account_no,tel_main,address from ac_schemes where account_no = '"
                          + memNo
                          + "'");
              java.sql.ResultSet rset41 =
                  st41.executeQuery(
                      "select payer_name from ac_schemes where account_no = '" + memNo + "'");
              //      java.sql.ResultSet rset1 = st1.executeQuery("select date,admission_no||'
              // '||cheque_no, upper(item),invoice_no ||'
              // '||receipt_no,debit,credit,credit_bal,balance from ac_debtors where account_no = '"
              // + memNo + "' AND date::date BETWEEN '" + beginDate + "' AND '" + endDate + "' group
              // by 1, 2, 3order by date,invoice_no");// UNION select
              // pd.date::date,initcap(pd.scheme_staff_no), (sh.first_name||' '||sh.second_name||'
              // '||sh.last_name) as name,pd.reference,sum(pd.credit),pd.patient_no from
              // hp_patient_card pd,hp_inpatient_register sh where pd.patient_no = sh.patient_no and
              // pd.isurer = '"+memNo+"' AND pd.date::date BETWEEN '"+beginDate+"' AND '"+endDate+"'
              // and pd.credit > 0 group by pd.date::date,pd.scheme_staff_no,
              // name,pd.reference,pd.invoice_no,pd.patient_no order by pd.invoice_no");
              java.sql.ResultSet rsetTotals2 =
                  st22.executeQuery(
                      "select sum(debit - credit) from ac_debtors where account_no = '"
                          + memNo
                          + "' AND date::date < '"
                          + beginDate
                          + "'");
              java.sql.ResultSet rsetTotals =
                  st2.executeQuery(
                      "select sum(debit),sum(credit) from ac_debtors where account_no = '"
                          + memNo
                          + "' AND date::date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "'");

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP | Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(9);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase("Statement of Account", pFontHeader11);
              table.addCell(phrase);

              while (rset4.next()) {
                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
                table.getDefaultCell().setColspan(9);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset4.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);

                while (rset41.next()) {
                  table.getDefaultCell().setColspan(9);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset41.getString(1), pFontHeader1);
                  table.addCell(phrase);
                }
                table.getDefaultCell().setColspan(9);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase =
                    new Phrase(
                        "Account No : " + rset4.getObject(2).toString().toUpperCase(),
                        pFontHeader1);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        dbObject.getDBObject("Tel : " + rset4.getObject(3), "-"), pFontHeader1);
                table.addCell(phrase);
                phrase = new Phrase(dbObject.getDBObject(rset4.getObject(4), "-"), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(6);
              }
              try {
                java.text.DateFormat dateFormat =
                    java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

                java.util.Date endDate1 =
                    dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
                java.util.Date endDate11 =
                    dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

                System.out.println("" + endDate1);
                //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
                // pFontHeader);

                //  table.addCell(phrase);

                phrase =
                    new Phrase(
                        "Period : "
                            + dateFormat.format(endDate11)
                            + " - "
                            + dateFormat.format(endDate1),
                        pFontHeader1);

                table.addCell(phrase);
              } catch (java.text.ParseException psExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), psExec.getMessage());
              }
              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
              // table.addCell(phrase);

              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Date " + datenowSql, pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(3);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
              table.getDefaultCell().setBorderWidth(Rectangle.TOP);
              table.getDefaultCell().setColspan(1);
              // phrase = new Phrase("Date", pFontHeader1);
              // table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Staff No.", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase(" Staff Name", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("", pFontHeader1);
              table.addCell(phrase);
              phrase = new Phrase("Debit Bal. ", pFontHeader1);
              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              phrase = new Phrase("Running Amt. " + ks, pFontHeader1);
              table.addCell(phrase);

              while (rsetTotals2.next()) {
                table.getDefaultCell().setColspan(5);

                table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("BAL/BF", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                table.getDefaultCell().setColspan(4);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rsetTotals2.getString(1)),
                        pFontHeader1);
                osBalancebf = osBalancebf + rsetTotals2.getDouble(1);
                table.addCell(phrase);
              }
              for (int i = 0; i < listofStaffNos.length; i++) {
                java.sql.ResultSet rset1 =
                    st1.executeQuery(
                        "select admission_no, upper(item), sum(debit - credit) from ac_debtors where account_no = '"
                            + memNo
                            + "' and admission_no = '"
                            + listofStaffNos[i]
                            + "' AND date::date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' GROUP BY 1, 2");
                while (rset1.next()) {
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1.getObject(1), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(6);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(dbObject.getDBObject(rset1.getObject(2), "-"), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  // phrase = new Phrase(dbObject.getDBObject(rset1.getObject(3), "-"),
                  // pFontHeader);

                  // table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  // phrase = new Phrase(dbObject.getDBObject(rset1.getObject(4), "-"),
                  // pFontHeader);

                  // table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  // phrase = new Phrase(new
                  // com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(5)),
                  // pFontHeader);
                  // Debit = Debit + rset1.getDouble(5);
                  // table.addCell(phrase);
                  // phrase = new Phrase(new
                  // com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(6)),
                  // pFontHeader);
                  // Credit = Credit + rset1.getDouble(6);
                  // table.addCell(phrase);

                  // phrase = new Phrase(new
                  // com.afrisoftech.sys.Format2Currency().Format2Currency(rset1.getString(7)),
                  // pFontHeader);
                  // osBalance1 = osBalance1 + rset1.getDouble(6);
                  // table.addCell(phrase);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset1.getString(3)),
                          pFontHeader);
                  osBalancebf = osBalancebf + rset1.getDouble(3);
                  // osBalancebf = osBalance1;
                  table.addCell(phrase);
                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(java.lang.String.valueOf(osBalancebf - osBalance1)),
                          pFontHeader);

                  table.addCell(phrase);
                }
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(4);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              phrase = new Phrase("", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalancebf - osBalance1)),
                      pFontHeader);

              table.addCell(phrase);

              // phrase = new Phrase(" ");

              //     }
              try {

                java.sql.Statement st31 = connectDB.createStatement();
                // java.sql.Statement st4 = connectDB.createStatement();
                java.sql.ResultSet rset2 = st31.executeQuery("select name from pb_notice");

                // java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from
                // pb_hospitalprofile");
                //   java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                while (rset2.next()) {
                  Messg = rset2.getString(1);
                }
                com.lowagie.text.HeaderFooter footer =
                    new com.lowagie.text.HeaderFooter(
                        new Phrase("" + Messg + ""),
                        false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                // Font.BOLDITALIC,java.awt.Color.blue)));

                //  com.lowagie.text.HeaderFooter headerFoter = new
                // com.lowagie.text.HeaderFooter(new Phrase(""+compName+""),false);//
                // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                // Font.BOLDITALIC,java.awt.Color.blue)));
                //  headerFoter.ALIGN_CENTER;
                //  headerFoter.setRight(5);
                docPdf.setFooter(footer);

              } catch (java.sql.SQLException SqlExec) {

                SqlExec.printStackTrace();
                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), SqlExec.getMessage());
              }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              SqlExec.printStackTrace();
              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

            // }  // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("xpdf " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofStaffNos() {

    java.lang.Object[] listofStaffNos = null;

    java.util.Vector listStaffNoVector = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT admission_no FROM ac_debtors WHERE date::date BETWEEN '"
                  + beginDate
                  + "' AND '"
                  + endDate
                  + "' AND invoice_no IS NOT NULL and admission_no IS NOT NULL AND account_no = '"
                  + this.memNo
                  + "' ORDER BY admission_no");

      while (rSet1.next()) {

        listStaffNoVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofStaffNos = listStaffNoVector.toArray();
    System.out.println("Done list of Staff Nos ...");
    return listofStaffNos;
  }
}
Example #22
0
public class SalesReportPdf implements java.lang.Runnable {
  com.afrisoftech.lib.DBObject dbObject;

  java.util.Date beginDate = null;

  java.lang.String CashPoint = null;

  java.lang.String gAccount = null;

  java.util.Date endDate = null;

  int counter = 0;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  java.lang.Thread threadSample;
  String ks;
  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void SalesReportPdf(
      java.sql.Connection connDb,
      java.util.Date begindate,
      java.util.Date endate,
      java.lang.String cashPoint,
      java.lang.String glAccount) {

    connectDB = connDb;

    beginDate = begindate;

    endDate = endate;

    CashPoint = cashPoint;

    gAccount = glAccount;

    dbObject = new com.afrisoftech.lib.DBObject();

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new TransactionsListPdf().TransactionsListPdf();

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(100);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          try {

            java.lang.Class.forName("org.postgresql.Driver");

          } catch (java.lang.ClassNotFoundException cnfExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), cnfExec.getMessage());
          }

          String compName = null;
          String date = null;
          try {

            //   java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.Statement st2x = connectDB.createStatement();

            java.sql.ResultSet rset2x =
                st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
            while (rset2x.next()) {
              ks = rset2x.getObject(1).toString();
            }
            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName + "", pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Transaction List - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(9);

            int headerwidths[] = {5, 25, 10, 10, 14, 10, 14, 14, 8};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(9);

            Phrase phrase = new Phrase("", pFontHeader);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);
              table.getDefaultCell().setColspan(5);

              phrase =
                  new Phrase(
                      "Sales ["
                          + CashPoint
                          + "] Report :     Period : From "
                          + dateFormat.format(endDate11)
                          + " To "
                          + dateFormat.format(endDate1),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase = new Phrase("Printed On  : " + date, pFontHeader);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }
            // Phrase phrase = new Phrase("Patients List As At:" +endDate, pFontHeader);

            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);
            phrase = new Phrase("No", pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("ITEM", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("UNIT", pFontHeader);
            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("COUNT", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("UNIT COST", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("TOTAL COST", pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("SELLING PRICE", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("TOTAL " + ks, pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("PROFIT " + ks, pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("MARKUP%", pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            double osBalance11 = 0.00;
            double osBalance31 = 0.00;

            double current = 0.00;
            double osBalance1 = 0.00;

            double osBalance3 = 0.00;
            try {
              java.lang.Object[] listofAct1 = this.getDates();
              // for (int k = 0; k < listofAct1.length; k++) {
              double osBalance21 = 0.00;
              double osBalance22 = 0.00;
              double osBalance23 = 0.00;
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(8);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              //     phrase = new Phrase(listofAct1[k].toString().toUpperCase(), pFontHeader);
              //  table.addCell(phrase);
              java.lang.Object[] listofAct = this.getListofActivities();

              // java.lang.Object[] listofAct = this.getListofActivities();

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              System.out.println(listofAct.length);

              //  java.sql.Statement pSet1 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();

              for (int i = 0; i < listofAct.length; i++) {
                double qtys = 0.00;
                double osBalance2 = 0.00;
                // AND st.transfer_price > 0
                System.out.println("item" + listofAct[i]);
                //  java.sql.Statement stbx = connectDB.createStatement();
                java.sql.Statement st2 = connectDB.createStatement();
                // java.sql.PreparedStatement st1 = connectDB.prepareStatement("select
                // ph.description,sum(ph.quantity) as quantity,avg(st.transfer_price)::numeric(10,2)
                // as bprice,sum((ph.quantity * st.transfer_price)::numeric(10,2)) as cost, CASE
                // WHEN (sum(ph.quantity) > 0 ) THEN
                // (sum(ph.amount)/sum(ph.quantity))::numeric(10,2) ELSE 1.00 END AS
                // sprice,sum(amount)::numeric(10,2) as amt,sum(amount) - sum(ph.quantity *
                // st.transfer_price)::numeric(10,2),CASE WHEN (sum(transfer_price) = 0) THEN 0.00
                // ELSE (avg(st.selling_price)/avg(st.transfer_price))::numeric(10,2) END AS markup
                // from hp_pharmacy ph,st_stock_prices st WHERE ph.main_service ilike
                // '"+CashPoint+"%' AND st.department ilike '"+CashPoint+"%' and ph.description = ?
                // AND ph.date_prescribed BETWEEN '"+beginDate+"' AND '"+endDate+"' AND
                // ph.description ilike st.product GROUP BY ph.description");
                java.sql.PreparedStatement st1 =
                    connectDB.prepareStatement(
                        "select ph.description,sum(ph.quantity) as quantity,avg(st.transfer_price)::numeric(10,2) as bprice,sum((ph.quantity * st.transfer_price)::numeric(10,2)) as cost, CASE WHEN (sum(ph.quantity) > 0 ) THEN (sum(ph.amount)/sum(ph.quantity))::numeric(10,2) ELSE 1.00 END AS sprice,sum(amount)::numeric(10,2) as amt,sum(amount) - sum(ph.quantity * st.transfer_price)::numeric(10,2),CASE WHEN (sum(transfer_price) = 0) THEN 0.00 ELSE (avg(st.selling_price)/avg(st.transfer_price))::numeric(10,2) END AS markup from hp_pharmacy ph,st_stock_prices st WHERE ph.main_service ilike '"
                            + CashPoint
                            + "%' AND st.department ilike '"
                            + CashPoint
                            + "%' and ph.description = ? AND ph.date_prescribed BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' AND ph.description = st.product GROUP BY ph.description");

                // java.sql.PreparedStatement stbx = connectDB.prepareStatement("select
                // sum(credit-debit) FROM ac_ledger WHERE activity_code ilike '"+gAccount+"%' and
                // service_type ilike ? AND date BETWEEN '"+beginDate+"' AND '"+endDate+"' AND
                // (transaction_type = 'Revenue' OR transaction_type = 'Refunds') GROUP BY
                // service_type");
                java.sql.PreparedStatement stbx =
                    connectDB.prepareStatement(
                        "select sum(credit-debit) FROM ac_ledger WHERE activity_code = '"
                            + gAccount
                            + "' and service_type = ? AND date::date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' GROUP BY service_type");
                st1.setString(1, listofAct[i].toString());
                java.sql.ResultSet rset = st1.executeQuery();
                stbx.setString(1, listofAct[i].toString());
                java.sql.ResultSet rsetbx = stbx.executeQuery();
                while (rset.next()) {
                  while (rsetbx.next()) {
                    // table.getDefaultCell().setColspan(1);
                    table.getDefaultCell().setColspan(1);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    counter = counter + 1;
                    phrase = new Phrase("" + counter, pFontHeader1);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader1);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset.getString(2)),
                            pFontHeader1);
                    table.addCell(phrase);
                    qtys = rset.getDouble(2);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset.getString(3)),
                            pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset.getString(4)),
                            pFontHeader1);
                    osBalance1 = rset.getDouble(4);
                    osBalance21 = osBalance21 + rset.getDouble(4);
                    osBalance11 = rset.getDouble(4);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    /* phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(6)),pFontHeader1);
                    osBalance2 = osBalance2 + rset.getDouble(6);
                    osBalance22 = osBalance22 + rset.getDouble(6);
                    table.addCell(phrase);
                    */

                    // phrase = new Phrase(new
                    // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetbx.getString(1)),pFontHeader1);
                    osBalance2 = rsetbx.getDouble(1);
                    osBalance22 = osBalance22 + rsetbx.getDouble(1);
                    if (qtys > 0) {
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(java.lang.String.valueOf(osBalance2 / qtys)),
                              pFontHeader1);
                      table.addCell(phrase);
                    } else {
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(java.lang.String.valueOf(osBalance2 / 1)),
                              pFontHeader1);
                      table.addCell(phrase);
                    }

                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(java.lang.String.valueOf(osBalance2)),
                            pFontHeader1);

                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    // phrase = new Phrase(new
                    // com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(7)),pFontHeader1);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(java.lang.String.valueOf(osBalance2 - osBalance1)),
                            pFontHeader1);

                    /* osBalance3 = osBalance3 + rset.getDouble(7);
                    osBalance23 = osBalance23 + rset.getDouble(7);
                    osBalance31 = rset.getDouble(7);
                    */

                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    if (osBalance1 > 0) {
                      // phrase = new Phrase(new
                      // com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(8)),pFontHeader1);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(
                                      java.lang.String.valueOf(osBalance2 / osBalance1)),
                              pFontHeader1);

                      table.addCell(phrase);
                    } else {
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(java.lang.String.valueOf(osBalance2 / 1)),
                              pFontHeader1);

                      table.addCell(phrase);
                    }
                  }
                }
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("" + counter, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("  ", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance21)),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" ", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance22)),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance22 - osBalance21)),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              //   phrase = new Phrase(" ", pFontHeader);
              if (osBalance21 > 0) {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance22 / osBalance21)),
                        pFontHeader);

                table.addCell(phrase);
              } else {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(0.00)),
                        pFontHeader);

                table.addCell(phrase);
              }
              //  }
              /*   table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                //  while (rsetTotals.next()) {
                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("  ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Sum Total", pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(osBalance1)), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(osBalance2)), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(osBalance3)), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
              */

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getDates() {

    java.lang.Object[] listofDates = null;

    java.util.Vector listofDatesVector = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT category FROM st_stock_prices where department ilike '"
                  + CashPoint
                  + "' ORDER BY category");

      while (rSet1.next()) {

        listofDatesVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofDates = listofDatesVector.toArray();
    System.out.println("Done list of Staff Nos ...");
    return listofDates;
  }

  public java.lang.Object[] getListofActivities() {

    java.lang.Object[] listofActivities = null;

    java.util.Vector listActVector = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      //  java.sql.ResultSet rSet1 = stmt1.executeQuery("SELECT DISTINCT activity_code FROM
      // ac_cash_collection where date BETWEEN '"+beginDate+"' AND '"+endDate+"' AND
      // transaction_type not ilike 'Bank%' EXCEPT select code from pb_activity where activity ilike
      // 'Pharmacy%' ORDER BY activity_code");
      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT ph.service_type FROM ac_ledger ph where ph.date BETWEEN '"
                  + beginDate
                  + "' AND '"
                  + endDate
                  + "'  AND ph.activity_code = '"
                  + gAccount
                  + "' ORDER BY ph.service_type");

      while (rSet1.next()) {

        listActVector.addElement(rSet1.getObject(1).toString().toUpperCase());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofActivities = listActVector.toArray();
    System.out.println("Done list of activities ...");
    return listofActivities;
  }
  /*   public java.lang.Object[] getListofActivities() {

      java.lang.Object[] listofActivities = null;

      java.util.Vector listActVector = new java.util.Vector(1,1);


      try {

          //    java.sql.Connection connDB = java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

          java.sql.Statement stmt1 = connectDB.createStatement();

          //  java.sql.ResultSet rSet1 = stmt1.executeQuery("SELECT DISTINCT description FROM hp_pharmacy where amount > 0 AND date_prescribed BETWEEN '"+beginDate+"' AND '"+endDate+"' order by description");
          java.sql.ResultSet rSet1 = stmt1.executeQuery("SELECT DISTINCT description FROM hp_pharmacy where date_prescribed BETWEEN '"+beginDate+"' AND '"+endDate+"' order by description");


          while (rSet1.next()) {
              //if (rSet1.getFloat(1) > 0){
              listActVector.addElement(rSet1.getObject(1).toString());
              //}
          }
          System.out.println("description"+rSet1.getObject(1).toString());
      }catch (java.sql.SQLException sqlExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());

      }

      listofActivities = listActVector.toArray();
      System.out.println("Done list of activities ...");
      return listofActivities;
  }*/
}
public class OrderedItemsPdf implements java.lang.Runnable {
  //// java.awt.Desktop deskTop = Desktop.getDesktop();
  java.util.Date beginDate = null;
  java.util.Date endDate = null;
  public static java.sql.Connection connectDB = null;
  public java.lang.String dbUserName = null;
  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;
  boolean threadCheck = true;
  java.lang.Thread threadSample;
  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.NORMAL);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();
  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();
  java.lang.Process prThread;

  public void OrderedItemsPdf(
      java.sql.Connection connDb, java.util.Date begindate, java.util.Date endate) {
    // public void OrderedItemsPdf(java.sql.Connection connDb) {

    connectDB = connDb;
    beginDate = begindate;
    endDate = endate;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {
    //		new TransactionsListPdf().TransactionsListPdf();
  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(2000);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      // com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document(PageSize.A4.rotate());

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          try {

            java.lang.Class.forName("org.postgresql.Driver");

          } catch (java.lang.ClassNotFoundException cnfExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), cnfExec.getMessage());
          }

          String compName = null;
          String date = null;
          try {

            //   java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));

            //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Orders - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(7);

            int headerwidths[] = {12, 10, 30, 30, 8, 8, 12};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(5);

            Phrase phrase = new Phrase("Orders list as at: " + endDate, pFontHeader);

            table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
            table.getDefaultCell().setColspan(2);
            phrase = new Phrase("Printed on : " + date, pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
            phrase = new Phrase("Order No", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Date Due", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Supplier", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Item", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Units", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Qty", pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
            phrase = new Phrase("Net Value", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.lang.Object[] listofAct = this.getListofActivities();
              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.Statement st2 = connectDB.createStatement();

              for (int i = 0; i < listofAct.length; i++) {
                int w = 0;
                java.sql.ResultSet rset3 =
                    st3.executeQuery(
                        "SELECT DISTINCT order_no,date_due AS date,supplier from st_orders WHERE date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' AND order_no = '"
                            + listofAct[i].toString()
                            + "' ORDER BY date");

                java.sql.ResultSet rset =
                    st.executeQuery(
                        "SELECT item,units,quantity,net_value from st_orders WHERE date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' AND order_no = '"
                            + listofAct[i].toString()
                            + "' ORDER BY item");
                java.sql.ResultSet rsetTotals =
                    st2.executeQuery(
                        "SELECT SUM(net_value) from st_orders WHERE date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "'  AND order_no = '"
                            + listofAct[i].toString()
                            + "'");

                while (rset3.next()) {
                  while (rset.next()) {
                    w = w + 1;

                    if (w == 1) {
                      table.getDefaultCell().setColspan(1);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset3.getObject(2).toString(), pFontHeader1);

                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset3.getObject(3).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(2).toString(), pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(3)),
                              pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(4)),
                              pFontHeader1);
                      table.addCell(phrase);

                    } else {
                      table.getDefaultCell().setColspan(1);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);

                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase("", pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                      table.addCell(phrase);
                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                      phrase = new Phrase(rset.getObject(2).toString(), pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(3)),
                              pFontHeader1);
                      table.addCell(phrase);

                      table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(rset.getString(4)),
                              pFontHeader1);
                      table.addCell(phrase);
                    }
                  }
                }
                // table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                // table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                while (rsetTotals.next()) {

                  table.getDefaultCell().setColspan(5);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                  phrase = new Phrase("Total", pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase = new Phrase((""), pFontHeader);

                  table.addCell(phrase);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rsetTotals.getString(1)),
                          pFontHeader);

                  table.addCell(phrase);
                }
              }
              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofActivities() {

    java.lang.Object[] listofActivities = null;

    java.util.Vector listActVector = new java.util.Vector(1, 1);

    try {

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT order_no FROM st_orders WHERE date BETWEEN '"
                  + beginDate
                  + "' AND '"
                  + endDate
                  + "' ORDER BY order_no");

      while (rSet1.next()) {

        listActVector.addElement(rSet1.getObject(1).toString().toUpperCase());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofActivities = listActVector.toArray();
    System.out.println("Done list of activities ...");
    return listofActivities;
  }
}
Example #24
0
  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          try {

            java.lang.Class.forName("org.postgresql.Driver");

          } catch (java.lang.ClassNotFoundException cnfExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), cnfExec.getMessage());
          }

          String compName = null;
          String date = null;
          try {

            //   java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();
            java.sql.Statement st2x = connectDB.createStatement();

            java.sql.ResultSet rset2x =
                st2x.executeQuery("SELECT rep_currency from pb_hospitalprofile");
            while (rset2x.next()) {
              ks = rset2x.getObject(1).toString();
            }
            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName + "", pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Transaction List - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
          // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(9);

            int headerwidths[] = {5, 25, 10, 10, 14, 10, 14, 14, 8};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(9);

            Phrase phrase = new Phrase("", pFontHeader);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);
              table.getDefaultCell().setColspan(5);

              phrase =
                  new Phrase(
                      "Sales ["
                          + CashPoint
                          + "] Report :     Period : From "
                          + dateFormat.format(endDate11)
                          + " To "
                          + dateFormat.format(endDate1),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(4);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase = new Phrase("Printed On  : " + date, pFontHeader);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }
            // Phrase phrase = new Phrase("Patients List As At:" +endDate, pFontHeader);

            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);
            phrase = new Phrase("No", pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("ITEM", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("UNIT", pFontHeader);
            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("COUNT", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("UNIT COST", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("TOTAL COST", pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("SELLING PRICE", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("TOTAL " + ks, pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("PROFIT " + ks, pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("MARKUP%", pFontHeader);
            table.addCell(phrase);
            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            double osBalance11 = 0.00;
            double osBalance31 = 0.00;

            double current = 0.00;
            double osBalance1 = 0.00;

            double osBalance3 = 0.00;
            try {
              java.lang.Object[] listofAct1 = this.getDates();
              // for (int k = 0; k < listofAct1.length; k++) {
              double osBalance21 = 0.00;
              double osBalance22 = 0.00;
              double osBalance23 = 0.00;
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);
              table.getDefaultCell().setColspan(8);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              //     phrase = new Phrase(listofAct1[k].toString().toUpperCase(), pFontHeader);
              //  table.addCell(phrase);
              java.lang.Object[] listofAct = this.getListofActivities();

              // java.lang.Object[] listofAct = this.getListofActivities();

              //    java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              System.out.println(listofAct.length);

              //  java.sql.Statement pSet1 = connectDB.createStatement();
              java.sql.Statement st = connectDB.createStatement();

              for (int i = 0; i < listofAct.length; i++) {
                double qtys = 0.00;
                double osBalance2 = 0.00;
                // AND st.transfer_price > 0
                System.out.println("item" + listofAct[i]);
                //  java.sql.Statement stbx = connectDB.createStatement();
                java.sql.Statement st2 = connectDB.createStatement();
                // java.sql.PreparedStatement st1 = connectDB.prepareStatement("select
                // ph.description,sum(ph.quantity) as quantity,avg(st.transfer_price)::numeric(10,2)
                // as bprice,sum((ph.quantity * st.transfer_price)::numeric(10,2)) as cost, CASE
                // WHEN (sum(ph.quantity) > 0 ) THEN
                // (sum(ph.amount)/sum(ph.quantity))::numeric(10,2) ELSE 1.00 END AS
                // sprice,sum(amount)::numeric(10,2) as amt,sum(amount) - sum(ph.quantity *
                // st.transfer_price)::numeric(10,2),CASE WHEN (sum(transfer_price) = 0) THEN 0.00
                // ELSE (avg(st.selling_price)/avg(st.transfer_price))::numeric(10,2) END AS markup
                // from hp_pharmacy ph,st_stock_prices st WHERE ph.main_service ilike
                // '"+CashPoint+"%' AND st.department ilike '"+CashPoint+"%' and ph.description = ?
                // AND ph.date_prescribed BETWEEN '"+beginDate+"' AND '"+endDate+"' AND
                // ph.description ilike st.product GROUP BY ph.description");
                java.sql.PreparedStatement st1 =
                    connectDB.prepareStatement(
                        "select ph.description,sum(ph.quantity) as quantity,avg(st.transfer_price)::numeric(10,2) as bprice,sum((ph.quantity * st.transfer_price)::numeric(10,2)) as cost, CASE WHEN (sum(ph.quantity) > 0 ) THEN (sum(ph.amount)/sum(ph.quantity))::numeric(10,2) ELSE 1.00 END AS sprice,sum(amount)::numeric(10,2) as amt,sum(amount) - sum(ph.quantity * st.transfer_price)::numeric(10,2),CASE WHEN (sum(transfer_price) = 0) THEN 0.00 ELSE (avg(st.selling_price)/avg(st.transfer_price))::numeric(10,2) END AS markup from hp_pharmacy ph,st_stock_prices st WHERE ph.main_service ilike '"
                            + CashPoint
                            + "%' AND st.department ilike '"
                            + CashPoint
                            + "%' and ph.description = ? AND ph.date_prescribed BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' AND ph.description = st.product GROUP BY ph.description");

                // java.sql.PreparedStatement stbx = connectDB.prepareStatement("select
                // sum(credit-debit) FROM ac_ledger WHERE activity_code ilike '"+gAccount+"%' and
                // service_type ilike ? AND date BETWEEN '"+beginDate+"' AND '"+endDate+"' AND
                // (transaction_type = 'Revenue' OR transaction_type = 'Refunds') GROUP BY
                // service_type");
                java.sql.PreparedStatement stbx =
                    connectDB.prepareStatement(
                        "select sum(credit-debit) FROM ac_ledger WHERE activity_code = '"
                            + gAccount
                            + "' and service_type = ? AND date::date BETWEEN '"
                            + beginDate
                            + "' AND '"
                            + endDate
                            + "' GROUP BY service_type");
                st1.setString(1, listofAct[i].toString());
                java.sql.ResultSet rset = st1.executeQuery();
                stbx.setString(1, listofAct[i].toString());
                java.sql.ResultSet rsetbx = stbx.executeQuery();
                while (rset.next()) {
                  while (rsetbx.next()) {
                    // table.getDefaultCell().setColspan(1);
                    table.getDefaultCell().setColspan(1);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    counter = counter + 1;
                    phrase = new Phrase("" + counter, pFontHeader1);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                    phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader1);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset.getString(2)),
                            pFontHeader1);
                    table.addCell(phrase);
                    qtys = rset.getDouble(2);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset.getString(3)),
                            pFontHeader1);
                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(rset.getString(4)),
                            pFontHeader1);
                    osBalance1 = rset.getDouble(4);
                    osBalance21 = osBalance21 + rset.getDouble(4);
                    osBalance11 = rset.getDouble(4);
                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    /* phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(6)),pFontHeader1);
                    osBalance2 = osBalance2 + rset.getDouble(6);
                    osBalance22 = osBalance22 + rset.getDouble(6);
                    table.addCell(phrase);
                    */

                    // phrase = new Phrase(new
                    // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetbx.getString(1)),pFontHeader1);
                    osBalance2 = rsetbx.getDouble(1);
                    osBalance22 = osBalance22 + rsetbx.getDouble(1);
                    if (qtys > 0) {
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(java.lang.String.valueOf(osBalance2 / qtys)),
                              pFontHeader1);
                      table.addCell(phrase);
                    } else {
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(java.lang.String.valueOf(osBalance2 / 1)),
                              pFontHeader1);
                      table.addCell(phrase);
                    }

                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(java.lang.String.valueOf(osBalance2)),
                            pFontHeader1);

                    table.addCell(phrase);

                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    // phrase = new Phrase(new
                    // com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(7)),pFontHeader1);
                    phrase =
                        new Phrase(
                            new com.afrisoftech.sys.Format2Currency()
                                .Format2Currency(java.lang.String.valueOf(osBalance2 - osBalance1)),
                            pFontHeader1);

                    /* osBalance3 = osBalance3 + rset.getDouble(7);
                    osBalance23 = osBalance23 + rset.getDouble(7);
                    osBalance31 = rset.getDouble(7);
                    */

                    table.addCell(phrase);
                    table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                    if (osBalance1 > 0) {
                      // phrase = new Phrase(new
                      // com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(8)),pFontHeader1);
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(
                                      java.lang.String.valueOf(osBalance2 / osBalance1)),
                              pFontHeader1);

                      table.addCell(phrase);
                    } else {
                      phrase =
                          new Phrase(
                              new com.afrisoftech.sys.Format2Currency()
                                  .Format2Currency(java.lang.String.valueOf(osBalance2 / 1)),
                              pFontHeader1);

                      table.addCell(phrase);
                    }
                  }
                }
              }

              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //  while (rsetTotals.next()) {
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("" + counter, pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);
              phrase = new Phrase("  ", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance21)),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase(" ", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance22)),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance22 - osBalance21)),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
              //   phrase = new Phrase(" ", pFontHeader);
              if (osBalance21 > 0) {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalance22 / osBalance21)),
                        pFontHeader);

                table.addCell(phrase);
              } else {
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(0.00)),
                        pFontHeader);

                table.addCell(phrase);
              }
              //  }
              /*   table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                //  while (rsetTotals.next()) {
                table.getDefaultCell().setColspan(2);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("  ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Sum Total", pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(osBalance1)), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(osBalance2)), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                phrase = new Phrase(new com.afrisoftech.sys.Format2Currency().Format2Currency(java.lang.String.valueOf(osBalance3)), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(" ", pFontHeader);

                table.addCell(phrase);
              */

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
public class JournalsIndvPdf implements java.lang.Runnable {

  java.util.Date beginDate = null;

  java.util.Date endDate = null;

  java.lang.String Jno = null;

  java.lang.String Jno1 = null;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.NORMAL);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void JournalsIndvPdf(
      java.sql.Connection connDb, java.lang.String jno, java.lang.String jno1) {

    connectDB = connDb;

    //  beginDate = begindate;

    //  endDate = endate;

    Jno = jno;

    Jno1 = jno1;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new TransactionsListPdf().TransactionsListPdf();

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(200);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          try {

            java.lang.Class.forName("org.postgresql.Driver");

          } catch (java.lang.ClassNotFoundException cnfExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), cnfExec.getMessage());
          }

          String compName = null;
          String date = null;
          try {

            //   java.sql.Connection conDb =
            // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) compName = rset2.getObject(1).toString();

            while (rset4.next()) date = rset4.getObject(1).toString();

            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName + "", pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Journal List - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

            int headerwidths[] = {10, 10, 8, 25, 15, 15};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(6);

            Phrase phrase = new Phrase("", pFontHeader);
            double osBalance = 0;
            double osBalance1 = 0;
            //  try {
            //      java.text.DateFormat dateFormat =
            // java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM);//MEDIUM);
            //

            //                            java.util.Date endDate1 =
            // dateFormat.parse(endDate.toLocaleString());//dateInstance.toLocaleString());
            //                            java.util.Date endDate11 =
            // dateFormat.parse(beginDate.toLocaleString());//dateInstance.toLocaleString());

            //                            System.out.println(""+endDate1);
            //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
            // pFontHeader);

            //  table.addCell(phrase);
            table.getDefaultCell().setColspan(4);

            phrase = new Phrase("Journal  No : " + Jno, pFontHeader);

            table.addCell(phrase);
            table.getDefaultCell().setColspan(2);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("Printed On  : " + date, pFontHeader);

            table.addCell(phrase);
            // } catch(java.text.ParseException psExec) {

            //     javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(),
            // psExec.getMessage());
            //
            //  }
            // Phrase phrase = new Phrase("Patients List As At:" +endDate, pFontHeader);

            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);

            phrase = new Phrase("Date", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Activity Code", pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("journal No.", pFontHeader);
            table.addCell(phrase);
            phrase = new Phrase("Description", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            phrase = new Phrase("Debit KShs", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Credit KShs", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              java.sql.Statement st = connectDB.createStatement();

              java.sql.Statement st2 = connectDB.createStatement();

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select input_date,activity_code ,journal_no,description,debit,credit from ac_journal WHERE journal_no BETWEEN '"
                          + Jno
                          + "' AND '"
                          + Jno1
                          + "' ORDER BY journal_no"); // tn,debit_note db WHERE tn.policy_no != ''
                                                      // and tn.policy_no = db.policy_no GROUP BY
                                                      // tn.policy_no,db.policy_class");

              while (rset.next()) {

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getObject(2).toString(), pFontHeader1);

                table.addCell(phrase);
                phrase = new Phrase(rset.getObject(3).toString(), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getString(4).toString(), pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(5)),
                        pFontHeader1);
                osBalance = osBalance + rset.getDouble(5);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(6)),
                        pFontHeader1);
                osBalance1 = osBalance1 + rset.getDouble(6);
                table.addCell(phrase);
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              table.getDefaultCell().setColspan(4);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance)),
                      pFontHeader1);

              table.addCell(phrase);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance1)),
                      pFontHeader1);

              table.addCell(phrase);

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
}
public class PaymentVoucherPdf implements java.lang.Runnable {
  java.lang.String MNo = null;

  java.lang.String beginDate = null;

  java.lang.String endDate = null;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  //  java.lang.String memNo2Use = null;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.BOLD);
  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  //  public void FinalPatientInvoicePdf(java.sql.Connection connDb, java.lang.String begindate,
  // java.lang.String endate, java.lang.String combox) {
  public void FinalPatientInvoicePdf(java.sql.Connection connDb) {

    //  MNo = combox;

    connectDB = connDb;

    //    beginDate = begindate;

    //    endDate = endate;
    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new MemberStatementPdf().MemberStatementPdf(args[0]);

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf(MNo);

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(200);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          /*   try {


                 java.sql.Statement st3 = connectDB.createStatement();
                 java.sql.Statement st4 = connectDB.createStatement();

                 java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
                 java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                 while(rset2.next())
                     compName = rset2.getObject(1).toString();

                 while(rset4.next())
                     date = rset4.getObject(1).toString();
          */
          com.lowagie.text.HeaderFooter headerFoter =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("FINAL VOUCHER"),
                  false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
          // Font.BOLDITALIC,java.awt.Color.blue)));

          //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
          // Phrase(""+compName+""),false);//
          // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
          // Font.BOLDITALIC,java.awt.Color.blue)));
          headerFoter.setRight(5);
          docPdf.setHeader(headerFoter);

          docPdf.open();

          try {

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            for (int j = 0; j < listofStaffNos.length; j++) {
              com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

              int headerwidths[] = {25, 25, 20, 15, 15, 15};

              table.setWidths(headerwidths);

              table.setWidthPercentage((100));

              table.getDefaultCell().setBorder(Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(6);

              Phrase phrase = new Phrase();

              //  table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              try {

                java.sql.Statement st = connectDB.createStatement();
                java.sql.Statement st1 = connectDB.createStatement();
                java.sql.Statement st2 = connectDB.createStatement();
                java.sql.Statement st3 = connectDB.createStatement();
                java.sql.Statement st4 = connectDB.createStatement();
                java.sql.Statement st5 = connectDB.createStatement();
                java.sql.ResultSet rset3 =
                    st3.executeQuery(
                        "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
                java.sql.ResultSet rset4 =
                    st4.executeQuery("select dealer,description from ac.cash_book");
                // java.sql.ResultSet rset = st.executeQuery("select DISTINCT member_code,
                // member_name,date from shares_transactions order by member_code");
                java.sql.ResultSet rset =
                    st.executeQuery(
                        "select patient_no,initcap(first_name||' '||second_name||' '||last_name),address,residence,tel_no from hp_patient_register where patient_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset5 =
                    st5.executeQuery(
                        "select staff_no,staff_name from hp_schemestaff sh, hp_patient_card pc where pc.patient_no = '"
                            + listofStaffNos[j]
                            + "' AND pc.scheme_staff_no = sh.staff_no");
                java.sql.ResultSet rset1 =
                    st1.executeQuery(
                        "select date::date,initcap(service) as service,dosage,reference,debit from hp_patient_card where patient_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true order by date");
                java.sql.ResultSet rsetTotals =
                    st2.executeQuery(
                        "select sum(debit) from hp_patient_card where patient_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true");

                while (rset3.next()) {
                  table.getDefaultCell().setColspan(6);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                  phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader1);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setBorderColor(java.awt.Color.white);

                  table.getDefaultCell().setColspan(2);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase =
                      new Phrase("Address:" + "\t" + rset3.getObject(2).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Tel:" + "\t" + rset3.getObject(3).toString(), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Fax:" + "\t" + rset3.getObject(5).toString(), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setBorderColor(java.awt.Color.white);
                  table.getDefaultCell().setColspan(3);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Email:" + "\t" + rset3.getObject(6).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase =
                      new Phrase("Website:" + "\t" + rset3.getObject(7).toString(), pFontHeader);

                  table.addCell(phrase);
                  /// table.addCell("  ");

                }
                table.getDefaultCell().setColspan(6);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                phrase = new Phrase("Voucher", pFontHeader1);
                table.addCell(phrase);

                while (rset4.next()) table.getDefaultCell().setColspan(6);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset4.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Address:  " + rset4.getObject(2).toString(), pFontHeader);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Tel:       " + rset4.getObject(3).toString(), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Fax:       " + rset4.getObject(4).toString(), pFontHeader);

                table.addCell(phrase);
                /*    table.getDefaultCell().setBorderColor(java.awt.Color.white);
                  table.getDefaultCell().setColspan(3);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Email:"+"\t"+rset3.getObject(6).toString(), pFontHeader);
                  table.addCell(phrase);


                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Website:"+"\t" +rset3.getObject(7).toString(), pFontHeader);

                  table.addCell(phrase);
                  /// table.addCell("  ");
                */

                while (rset5.next()) {

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Member No.  " + rset5.getObject(1).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Member Name  " + rset5.getObject(2).toString(), pFontHeader);
                  table.addCell(phrase);
                }
                while (rset.next()) {

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Patient No.  " + rset.getObject(1).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Patient Name  " + rset.getObject(2).toString(), pFontHeader);
                  table.addCell(phrase);

                  /*
                  table.getDefaultCell().setColspan(2);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Address  "+rset.getObject(3).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(2);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Town  "+rset.getObject(4).toString(), pFontHeader);
                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(2);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("TEl No. "+rset.getObject(5).toString(), pFontHeader);
                  table.addCell(phrase);
                  */

                }
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
                table.getDefaultCell().setBorderWidth(Rectangle.TOP);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Date", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(2);
                phrase = new Phrase("Description", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Qty", pFontHeader1);
                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Ref", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Amount KShs", pFontHeader1);
                table.addCell(phrase);

                while (rset1.next()) {
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(1).toString(), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(2);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(2).toString(), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(3).toString(), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(4).toString(), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset1.getString(5)),
                          pFontHeader);

                  table.addCell(phrase);
                }

                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                while (rsetTotals.next()) {

                  table.getDefaultCell().setColspan(3);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Total", pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(3);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rsetTotals.getString(1)),
                          pFontHeader);

                  table.addCell(phrase);

                  // phrase = new Phrase(" ");

                }

                docPdf.add(table);

              } catch (java.sql.SQLException SqlExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), SqlExec.getMessage());
              }
            } // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }

  public java.lang.Object[] getListofStaffNos() {

    java.lang.Object[] listofStaffNos = null;

    java.util.Vector listStaffNoVector = new java.util.Vector(1, 1);

    try {

      //    java.sql.Connection connDB =
      // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

      java.sql.Statement stmt1 = connectDB.createStatement();

      java.sql.ResultSet rSet1 =
          stmt1.executeQuery(
              "SELECT DISTINCT patient_no FROM hp_patient_card WHERE date::date = current_date AND payment_mode = 'Scheme' order by patient_no");

      while (rSet1.next()) {

        listStaffNoVector.addElement(rSet1.getObject(1).toString());
      }

    } catch (java.sql.SQLException sqlExec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), sqlExec.getMessage());
    }

    listofStaffNos = listStaffNoVector.toArray();
    System.out.println("Done list of Staff Nos ...");
    return listofStaffNos;
  }
}
  public void generatePdf(java.lang.String memNo) {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          String compName = null;
          String date = null;
          /*   try {


                 java.sql.Statement st3 = connectDB.createStatement();
                 java.sql.Statement st4 = connectDB.createStatement();

                 java.sql.ResultSet rset2 = st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
                 java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
                 while(rset2.next())
                     compName = rset2.getObject(1).toString();

                 while(rset4.next())
                     date = rset4.getObject(1).toString();
          */
          com.lowagie.text.HeaderFooter headerFoter =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("FINAL VOUCHER"),
                  false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
          // Font.BOLDITALIC,java.awt.Color.blue)));

          //  com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
          // Phrase(""+compName+""),false);//
          // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
          // Font.BOLDITALIC,java.awt.Color.blue)));
          headerFoter.setRight(5);
          docPdf.setHeader(headerFoter);

          docPdf.open();

          try {

            java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            for (int j = 0; j < listofStaffNos.length; j++) {
              com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

              int headerwidths[] = {25, 25, 20, 15, 15, 15};

              table.setWidths(headerwidths);

              table.setWidthPercentage((100));

              table.getDefaultCell().setBorder(Rectangle.BOTTOM);

              table.getDefaultCell().setColspan(6);

              Phrase phrase = new Phrase();

              //  table.addCell(phrase);

              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
              table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

              try {

                java.sql.Statement st = connectDB.createStatement();
                java.sql.Statement st1 = connectDB.createStatement();
                java.sql.Statement st2 = connectDB.createStatement();
                java.sql.Statement st3 = connectDB.createStatement();
                java.sql.Statement st4 = connectDB.createStatement();
                java.sql.Statement st5 = connectDB.createStatement();
                java.sql.ResultSet rset3 =
                    st3.executeQuery(
                        "select hospital_name,postal_code||' '||box_no||' '||town,main_telno||' '||other_telno,initcap(street),main_faxno,email,website,room_no from pb_hospitalprofile");
                java.sql.ResultSet rset4 =
                    st4.executeQuery("select dealer,description from ac.cash_book");
                // java.sql.ResultSet rset = st.executeQuery("select DISTINCT member_code,
                // member_name,date from shares_transactions order by member_code");
                java.sql.ResultSet rset =
                    st.executeQuery(
                        "select patient_no,initcap(first_name||' '||second_name||' '||last_name),address,residence,tel_no from hp_patient_register where patient_no = '"
                            + listofStaffNos[j]
                            + "'");
                java.sql.ResultSet rset5 =
                    st5.executeQuery(
                        "select staff_no,staff_name from hp_schemestaff sh, hp_patient_card pc where pc.patient_no = '"
                            + listofStaffNos[j]
                            + "' AND pc.scheme_staff_no = sh.staff_no");
                java.sql.ResultSet rset1 =
                    st1.executeQuery(
                        "select date::date,initcap(service) as service,dosage,reference,debit from hp_patient_card where patient_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true order by date");
                java.sql.ResultSet rsetTotals =
                    st2.executeQuery(
                        "select sum(debit) from hp_patient_card where patient_no = '"
                            + listofStaffNos[j]
                            + "' AND paid = true");

                while (rset3.next()) {
                  table.getDefaultCell().setColspan(6);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                  phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader1);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setBorderColor(java.awt.Color.white);

                  table.getDefaultCell().setColspan(2);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase =
                      new Phrase("Address:" + "\t" + rset3.getObject(2).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Tel:" + "\t" + rset3.getObject(3).toString(), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Fax:" + "\t" + rset3.getObject(5).toString(), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setBorderColor(java.awt.Color.white);
                  table.getDefaultCell().setColspan(3);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Email:" + "\t" + rset3.getObject(6).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase =
                      new Phrase("Website:" + "\t" + rset3.getObject(7).toString(), pFontHeader);

                  table.addCell(phrase);
                  /// table.addCell("  ");

                }
                table.getDefaultCell().setColspan(6);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
                phrase = new Phrase("Voucher", pFontHeader1);
                table.addCell(phrase);

                while (rset4.next()) table.getDefaultCell().setColspan(6);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset4.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Address:  " + rset4.getObject(2).toString(), pFontHeader);
                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Tel:       " + rset4.getObject(3).toString(), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase("Fax:       " + rset4.getObject(4).toString(), pFontHeader);

                table.addCell(phrase);
                /*    table.getDefaultCell().setBorderColor(java.awt.Color.white);
                  table.getDefaultCell().setColspan(3);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Email:"+"\t"+rset3.getObject(6).toString(), pFontHeader);
                  table.addCell(phrase);


                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Website:"+"\t" +rset3.getObject(7).toString(), pFontHeader);

                  table.addCell(phrase);
                  /// table.addCell("  ");
                */

                while (rset5.next()) {

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Member No.  " + rset5.getObject(1).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Member Name  " + rset5.getObject(2).toString(), pFontHeader);
                  table.addCell(phrase);
                }
                while (rset.next()) {

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Patient No.  " + rset.getObject(1).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(6);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Patient Name  " + rset.getObject(2).toString(), pFontHeader);
                  table.addCell(phrase);

                  /*
                  table.getDefaultCell().setColspan(2);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Address  "+rset.getObject(3).toString(), pFontHeader);
                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(2);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Town  "+rset.getObject(4).toString(), pFontHeader);
                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(2);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("TEl No. "+rset.getObject(5).toString(), pFontHeader);
                  table.addCell(phrase);
                  */

                }
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);
                table.getDefaultCell().setBorderWidth(Rectangle.TOP);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Date", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(2);
                phrase = new Phrase("Description", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Qty", pFontHeader1);
                table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Ref", pFontHeader1);
                table.addCell(phrase);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                table.getDefaultCell().setColspan(1);
                phrase = new Phrase("Amount KShs", pFontHeader1);
                table.addCell(phrase);

                while (rset1.next()) {
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(1).toString(), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(2);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(2).toString(), pFontHeader);

                  table.addCell(phrase);
                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(3).toString(), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase(rset1.getObject(4).toString(), pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(1);
                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rset1.getString(5)),
                          pFontHeader);

                  table.addCell(phrase);
                }

                table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

                table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

                while (rsetTotals.next()) {

                  table.getDefaultCell().setColspan(3);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                  phrase = new Phrase("Total", pFontHeader);

                  table.addCell(phrase);

                  table.getDefaultCell().setColspan(3);

                  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

                  phrase =
                      new Phrase(
                          new com.afrisoftech.sys.Format2Currency()
                              .Format2Currency(rsetTotals.getString(1)),
                          pFontHeader);

                  table.addCell(phrase);

                  // phrase = new Phrase(" ");

                }

                docPdf.add(table);

              } catch (java.sql.SQLException SqlExec) {

                javax.swing.JOptionPane.showMessageDialog(
                    new javax.swing.JFrame(), SqlExec.getMessage());
              }
            } // }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
Example #28
0
public class OpRevBrdwnPdf implements java.lang.Runnable {

  public static java.sql.Connection connectDB = null;
  java.lang.String bank = null;
  java.util.Date beginDate = null;

  java.util.Date endDate = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;
  double balance = 0.00;

  boolean threadCheck = true;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.NORMAL);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void OpRevBrdwnPdf(
      java.sql.Connection connDb,
      java.util.Date begindate,
      java.util.Date endate,
      java.lang.String combox) {

    bank = combox;

    connectDB = connDb;

    beginDate = begindate;

    endDate = endate;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //	new CashBookListPdf().CashBookListPdf();

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(200);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          /*    try {

                java.lang.Class.forName("org.postgresql.Driver");

            } catch(java.lang.ClassNotFoundException cnfExec) {

                javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), cnfExec.getMessage());

            }
          */

          String compName = null;
          String date = null;
          try {

            java.sql.Statement st3 = connectDB.createStatement();
            java.sql.Statement st4 = connectDB.createStatement();

            java.sql.ResultSet rset2 =
                st3.executeQuery("SELECT hospital_name from pb_hospitalprofile");
            java.sql.ResultSet rset4 = st4.executeQuery("SELECT date('now') as Date");
            while (rset2.next()) {
              compName = rset2.getObject(1).toString();
            }
            while (rset4.next()) {
              date = rset4.getObject(1).toString();
            }
            com.lowagie.text.HeaderFooter headerFoter =
                new com.lowagie.text.HeaderFooter(
                    new Phrase("" + compName, pFontHeader),
                    false); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
                            // Font.BOLDITALIC,java.awt.Color.blue)));

            // com.lowagie.text.HeaderFooter headerFoter = new com.lowagie.text.HeaderFooter(new
            // Phrase(""+compName+""),false);//
            // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 14,
            // Font.BOLDITALIC,java.awt.Color.blue)));
            headerFoter.setAlignment(com.lowagie.text.HeaderFooter.ALIGN_CENTER);
            headerFoter.setRight(5);
            docPdf.setHeader(headerFoter);

          } catch (java.sql.SQLException SqlExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), SqlExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("OP Rev BreakDown - Page: "),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          docPdf.open();

          try {

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(3);

            int headerwidths[] = {
              50, 20, 30,
            };

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table.getDefaultCell().setColspan(3);
            Phrase phrase = new Phrase("", pFontHeader);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);
              table.getDefaultCell().setColspan(3);

              phrase =
                  new Phrase(bank.toUpperCase() + "    Revenue Break Down Report(OP)", pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(2);

              phrase =
                  new Phrase(
                      "Period : From "
                          + dateFormat.format(endDate11)
                          + " To "
                          + dateFormat.format(endDate1),
                      pFontHeader);

              table.addCell(phrase);
              table.getDefaultCell().setColspan(1);
              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase = new Phrase("Printed On  :" + date, pFontHeader);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }
            // Phrase phrase = new Phrase("Patients List As At:" +endDate, pFontHeader);

            // table.addCell(phrase);
            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);

            table.getDefaultCell().setColspan(2);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);

            phrase = new Phrase("Description", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

            //     table.addCell("Reference No.");
            table.getDefaultCell().setColspan(1);
            phrase = new Phrase("Amount KShs.", pFontHeader);
            table.addCell(phrase);

            // phrase = new Phrase("Credit KShs.",pFontHeader);
            // table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            // table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              //  java.sql.Connection conDb1 =
              // java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/sako","postgres","pilsiner");

              java.sql.Statement st = connectDB.createStatement();

              java.sql.Statement st2 = connectDB.createStatement();

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select UPPER(service),sum(amount) from ac_ledger WHERE date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' AND activity_code ilike '"
                          + bank
                          + "'  AND drawer = 'OP' group by service_type order by service_type ");

              while (rset.next()) {
                table.getDefaultCell().setColspan(2);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(rset.getObject(1).toString(), pFontHeader1);
                table.addCell(phrase);

                //   table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                //  phrase = new Phrase(rset.getObject(3).toString(), pFontHeader1);

                //   table.addCell(phrase);

                //   phrase = new Phrase(rset.getObject(4).toString(), pFontHeader1);

                //   table.addCell(phrase);

                table.getDefaultCell().setColspan(1);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                //  phrase = new Phrase(new
                // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(1)),pFontHeader);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(2)),
                        pFontHeader1);
                table.addCell(phrase);
                balance = balance + rset.getDouble(2);
                //  table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                //  phrase = new  Phrase(new
                // com.afrisoftech.sys.Format2Currency().Format2Currency(rset.getString(6)),pFontHeader1);
                //  table.addCell(phrase);
              }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              // while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(balance)),
                      pFontHeader);

              table.addCell(phrase);

              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              // phrase = new Phrase(new
              // com.afrisoftech.sys.Format2Currency().Format2Currency(rsetTotals.getString(2)),pFontHeader);

              // table.addCell(phrase);

              // }

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();
      com.afrisoftech.lib.PDFRenderer.renderPDF(tempFile);

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
}
  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }
public class DebtorsStatementPdf implements java.lang.Runnable {

  com.afrisoftech.lib.DBObject dbObject;

  java.util.Date beginDate = null;

  java.util.Date endDate = null;

  java.lang.String Debtor = null;

  double bfwd = 0.00;
  double bfcd = 0.00;

  public static java.sql.Connection connectDB = null;

  public java.lang.String dbUserName = null;

  org.netbeans.lib.sql.pool.PooledConnectionSource pConnDB = null;

  boolean threadCheck = true;

  java.lang.Thread threadSample;

  com.lowagie.text.Font pFontHeader = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
  com.lowagie.text.Font pFontHeader1 = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.NORMAL);

  //   com.lowagie.text.ParagraphFont pgraph = Paragraph();

  java.lang.Runtime rtThreadSample = java.lang.Runtime.getRuntime();

  java.lang.Process prThread;

  public void DebtorsStatementPdf(
      java.sql.Connection connDb,
      java.util.Date begindate,
      java.util.Date endate,
      java.lang.String debtor) {
    // public void OrderedItemsPdf(java.sql.Connection connDb) {
    dbObject = new com.afrisoftech.lib.DBObject();

    connectDB = connDb;

    beginDate = begindate;

    endDate = endate;

    Debtor = debtor;

    threadSample = new java.lang.Thread(this, "SampleThread");

    System.out.println("threadSample created");

    threadSample.start();

    System.out.println("threadSample fired");
  }

  public static void main(java.lang.String[] args) {

    //		new TransactionsListPdf().TransactionsListPdf();

  }

  public void run() {

    System.out.println("System has entered running mode");

    while (threadCheck) {

      System.out.println("O.K. see how we execute target program");

      this.generatePdf();

      try {

        System.out.println("Right, let's wait for task to complete of fail");

        java.lang.Thread.currentThread().sleep(200);

        System.out.println("It's time for us threads to get back to work after the nap");

      } catch (java.lang.InterruptedException IntExec) {

        System.out.println(IntExec.getMessage());
      }

      threadCheck = false;

      System.out.println("We shall be lucky to get back to start in one piece");
    }

    if (!threadCheck) {

      Thread.currentThread().stop();
    }
  }

  public java.lang.String getDateLable() {

    java.lang.String date_label = null;

    java.lang.String month_now_strs = null;

    java.lang.String date_now_strs = null;

    java.lang.String year_now_strs = null;

    java.lang.String minute_now_strs = null;

    java.lang.String hour_now_strs = null;

    java.lang.Runtime rt = java.lang.Runtime.getRuntime();

    java.util.Calendar calinst = java.util.Calendar.getInstance();

    java.util.Date date_now = calinst.getTime();

    int date_now_str = date_now.getDate();

    int month_now_str = date_now.getMonth();

    int year_now_str = date_now.getYear();

    int hour_now_str = date_now.getHours();

    int minute_now_str = date_now.getMinutes();

    int year_now_abs = year_now_str - 100;

    if (year_now_abs < 10) {

      year_now_strs = "200" + year_now_abs;

    } else {

      year_now_strs = "20" + year_now_abs;
    }

    switch (month_now_str) {
      case 0:
        month_now_strs = "JAN";

        break;

      case 1:
        month_now_strs = "FEB";

        break;

      case 2:
        month_now_strs = "MAR";

        break;

      case 3:
        month_now_strs = "APR";

        break;

      case 4:
        month_now_strs = "MAY";

        break;

      case 5:
        month_now_strs = "JUN";

        break;

      case 6:
        month_now_strs = "JUL";

        break;

      case 7:
        month_now_strs = "AUG";

        break;

      case 8:
        month_now_strs = "SEP";

        break;

      case 9:
        month_now_strs = "OCT";

        break;

      case 10:
        month_now_strs = "NOV";

        break;

      case 11:
        month_now_strs = "DEC";

        break;

      default:
        if (month_now_str < 10) {

          month_now_strs = "0" + month_now_str;

        } else {

          month_now_strs = "" + month_now_str;
        }
    }

    if (date_now_str < 10) {

      date_now_strs = "0" + date_now_str;

    } else {

      date_now_strs = "" + date_now_str;
    }

    if (minute_now_str < 10) {

      minute_now_strs = "0" + minute_now_str;

    } else {

      minute_now_strs = "" + minute_now_str;
    }

    if (hour_now_str < 10) {

      hour_now_strs = "0" + hour_now_str;

    } else {

      hour_now_strs = "" + hour_now_str;
    }

    date_label =
        date_now_strs + month_now_strs + year_now_strs + "@" + hour_now_strs + minute_now_strs;

    return date_label;
  }

  public void generatePdf() {

    java.lang.Process wait_for_Pdf2Show;

    java.util.Calendar cal = java.util.Calendar.getInstance();

    java.util.Date dateStampPdf = cal.getTime();

    java.lang.String pdfDateStamp = dateStampPdf.toString();

    try {

      java.io.File tempFile =
          java.io.File.createTempFile("REP" + this.getDateLable() + "_", ".pdf");

      tempFile.deleteOnExit();

      java.lang.Runtime rt = java.lang.Runtime.getRuntime();

      java.lang.String debitTotal = null;

      java.lang.String creditTotal = null;

      //            com.lowagie.text.Document docPdf = new com.lowagie.text.Document();
      com.lowagie.text.Document docPdf = new com.lowagie.text.Document();

      try {

        try {

          com.lowagie.text.pdf.PdfWriter.getInstance(
              docPdf, new java.io.FileOutputStream(tempFile));

          double osBalancebf = 0.00;
          double osBalance = 0.00;
          double osBalanceb1 = 0.00;

          String compName = null;
          String date = null;

          docPdf.open();

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            //  java.lang.Object listofStaffNos[] = this.getListofStaffNos();

            com.lowagie.text.pdf.PdfPTable table1 = new com.lowagie.text.pdf.PdfPTable(7);
            //  com.lowagie.text.Table table = new com.lowagie.text.Table(7);

            // table.endHeaders();

            int headerwidths[] = {15, 15, 30, 15, 15, 15, 15};

            table1.setWidths(headerwidths);
            //  if (docPdf.getPageNumber() > 1) {
            //  table1.setHeaderRows(4);
            //  }
            table1.setWidthPercentage((100));

            table1.getDefaultCell().setBorder(Rectangle.BOTTOM);

            table1.getDefaultCell().setColspan(7);

            Phrase phrase = new Phrase();

            //  table.addCell(phrase);

            table1.getDefaultCell().setColspan(1);
            table1.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            table1.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {
              java.sql.Statement st3 = connectDB.createStatement();
              java.sql.ResultSet rset3 = st3.executeQuery("select header_name from pb_header");
              while (rset3.next()) table1.getDefaultCell().setColspan(7);

              table1.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_CENTER);
              phrase = new Phrase(rset3.getObject(1).toString(), pFontHeader1);
              table1.addCell(phrase);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }
            docPdf.add(table1);
          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

          com.lowagie.text.HeaderFooter footer =
              new com.lowagie.text.HeaderFooter(
                  new Phrase("Debtors Statement - Page: ", pFontHeader),
                  true); // FontFactory.getFont(com.lowagie.text.FontFactory.HELVETICA, 12,
                         // Font.BOLDITALIC,java.awt.Color.blue));

          docPdf.setFooter(footer);

          try {

            java.util.Calendar calendar = java.util.Calendar.getInstance();

            long dateNow = calendar.getTimeInMillis();

            java.sql.Date datenowSql = new java.sql.Date(dateNow);

            System.out.println(datenowSql.toString());

            com.lowagie.text.pdf.PdfPTable table = new com.lowagie.text.pdf.PdfPTable(6);

            int headerwidths[] = {10, 30, 15, 15, 15, 20};

            table.setWidths(headerwidths);

            table.setWidthPercentage((100));

            table.setHeaderRows(2);

            table.getDefaultCell().setBorder(Rectangle.BOTTOM);

            Phrase phrase = new Phrase();
            //  table.getDefaultCell().setColspan(8);

            table.getDefaultCell().setColspan(4);

            try {
              java.text.DateFormat dateFormat =
                  java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); // MEDIUM);

              java.util.Date endDate1 =
                  dateFormat.parse(endDate.toLocaleString()); // dateInstance.toLocaleString());
              java.util.Date endDate11 =
                  dateFormat.parse(beginDate.toLocaleString()); // dateInstance.toLocaleString());

              System.out.println("" + endDate1);
              //  phrase = new Phrase(bank +" Report: " +dateFormat.format(formattedDate),
              // pFontHeader);

              //  table.addCell(phrase);

              phrase =
                  new Phrase(
                      Debtor
                          + " Period : "
                          + dateFormat.format(endDate11)
                          + " - "
                          + dateFormat.format(endDate1),
                      pFontHeader1);

              table.addCell(phrase);
            } catch (java.text.ParseException psExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), psExec.getMessage());
            }
            // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
            // phrase = new Phrase("Period : '"+beginDate+"' - '"+endDate+"'", pFontHeader1);
            // table.addCell(phrase);

            table.getDefaultCell().setColspan(2);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
            phrase = new Phrase("Date " + datenowSql, pFontHeader1);
            table.addCell(phrase);

            table.getDefaultCell().setColspan(3);
            table.getDefaultCell().setColspan(1);

            //    table.getDefaultCell().setBackgroundColor(java.awt.Color.LIGHT_GRAY);

            phrase = new Phrase("Acc No", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Scheme", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
            phrase = new Phrase("Debit", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Credit", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Balance ", pFontHeader);
            table.addCell(phrase);

            phrase = new Phrase("Running Total", pFontHeader);
            table.addCell(phrase);

            table.getDefaultCell().setBackgroundColor(java.awt.Color.WHITE);
            // table.getDefaultCell().setBorderColor(java.awt.Color.WHITE);

            try {

              java.sql.Statement st = connectDB.createStatement();
              java.sql.Statement st1 = connectDB.createStatement();

              java.sql.Statement st2 = connectDB.createStatement();

              java.sql.ResultSet rset =
                  st.executeQuery(
                      "select db.account_no,db.payee,sum(db.debit),sum(credit),SUM(db.balance) from ac_debtors db WHERE db.date BETWEEN '"
                          + beginDate
                          + "' AND '"
                          + endDate
                          + "' AND db.dealer ILIKE '"
                          + Debtor
                          + "' GROUP BY db.payee,db.account_no ORDER BY db.payee");
              java.sql.ResultSet rset1 =
                  st1.executeQuery(
                      "select SUM(db.balance) from ac_debtors db WHERE db.date < '"
                          + beginDate
                          + "' AND db.dealer ILIKE '"
                          + Debtor
                          + "' GROUP BY db.account_no");

              while (rset1.next()) {
                bfwd = rset1.getDouble(1);
                bfcd = bfcd + rset1.getDouble(1);
              }
              while (rset.next()) {

                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(1), "-"), pFontHeader);

                table.addCell(phrase);
                table.getDefaultCell().setColspan(1);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
                phrase = new Phrase(dbObject.getDBObject(rset.getObject(2), "-"), pFontHeader);

                table.addCell(phrase);

                table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);
                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(3)),
                        pFontHeader1);
                osBalance = osBalance + rset.getDouble(3);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(4)),
                        pFontHeader1);
                osBalanceb1 = osBalanceb1 + rset.getDouble(4);
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(rset.getString(5)),
                        pFontHeader);
                osBalancebf = osBalancebf + rset.getDouble(5);
                // osBalancebf = osBalance1;
                table.addCell(phrase);

                phrase =
                    new Phrase(
                        new com.afrisoftech.sys.Format2Currency()
                            .Format2Currency(java.lang.String.valueOf(osBalancebf)),
                        pFontHeader);

                table.addCell(phrase);
              }
              // }
              table.getDefaultCell().setBorderColor(java.awt.Color.BLACK);

              table.getDefaultCell().setBorder(Rectangle.BOTTOM | Rectangle.TOP);

              //   while (rsetTotals.next()) {

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_LEFT);
              phrase = new Phrase("Total", pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(1);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalance)),
                      pFontHeader);

              table.addCell(phrase);

              // table.getDefaultCell().setColspan(2);

              // table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalanceb1)),
                      pFontHeader);

              table.addCell(phrase);

              table.getDefaultCell().setColspan(2);

              table.getDefaultCell().setHorizontalAlignment(PdfCell.ALIGN_RIGHT);

              phrase =
                  new Phrase(
                      new com.afrisoftech.sys.Format2Currency()
                          .Format2Currency(java.lang.String.valueOf(osBalancebf)),
                      pFontHeader);

              table.addCell(phrase);

              docPdf.add(table);

            } catch (java.sql.SQLException SqlExec) {

              javax.swing.JOptionPane.showMessageDialog(
                  new javax.swing.JFrame(), SqlExec.getMessage());
            }

          } catch (com.lowagie.text.BadElementException BadElExec) {

            javax.swing.JOptionPane.showMessageDialog(
                new javax.swing.JFrame(), BadElExec.getMessage());
          }

        } catch (java.io.FileNotFoundException fnfExec) {

          javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), fnfExec.getMessage());
        }
      } catch (com.lowagie.text.DocumentException lwDocexec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), lwDocexec.getMessage());
      }

      docPdf.close();

      try {

        if (System.getProperty("os.name").equalsIgnoreCase("Linux")) {

          System.out.println(tempFile);

          //  wait_for_Pdf2Show = rt.exec("kghostview "+tempFile+"");

          wait_for_Pdf2Show = rt.exec("kghostview " + tempFile + "");

          wait_for_Pdf2Show.waitFor();

        } else {

          wait_for_Pdf2Show =
              rt.exec("c:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe " + tempFile);

          wait_for_Pdf2Show.waitFor();
        }

      } catch (java.lang.InterruptedException intrExec) {

        javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), intrExec.getMessage());
      }

    } catch (java.io.IOException IOexec) {

      javax.swing.JOptionPane.showMessageDialog(new javax.swing.JFrame(), IOexec.getMessage());
    }
  }
}