Search code examples
javaprintingtabular

Modification in WAGU (data in table view) library


Referring to post, in which answer given by Mr. Clough, He has written code to get the output like this,

       PLATINUM COMPUTERS(PVT) LTD          
 NO 20/B, Main Street, Kandy, Sri Lanka.    
Land: 812254630 Mob: 712205220 Fax: 812254639 

            CUSTOMER INVOICE                

+-----------------------+----------------------+
|INFO                   |CUSTOMER              |
+-----------------------+----------------------+
|DATE: 2015-9-8         |ModernTec Distributors|
|TIME: 10:53:AM         |MOB: +94719530398     |
|BILL NO: 12            |ADDRES: No 25, Main St|
|INVOICE NO: 458-80-108 |reet, Kandy.          |
+-----------------------+----------------------+
|                SELLING DETAILS               |
+-----------------+---------+-----+------------+
|ITEM             | PRICE($)|  QTY|       VALUE|
+-----------------+---------+-----+------------+
|Optical mouse    |   120.00|   20|     2400.00|
|Gaming keyboard  |   550.00|   30|    16500.00|
|320GB SATA HDD   |   220.00|   32|     7040.00|
|500GB SATA HDD   |   274.00|   13|     3562.00|
|1TB SATA HDD     |   437.00|   11|     4807.00|
|RE-DVD ROM       |   144.00|   29|     4176.00|
|DDR3 4GB RAM     |   143.00|   13|     1859.00|
|Blu-ray DVD      |    94.00|   28|     2632.00|
|WR-DVD           |   122.00|   34|     4148.00|
|Adapter          |   543.00|   28|    15204.00|
+-----------------+---------+-----+------------+
|               RETURNING DETAILS              |
+-----------------+---------+-----+------------+
|ITEM             | PRICE($)|  QTY|       VALUE|
+-----------------+---------+-----+------------+
|320GB SATA HDD   |   220.00|    4|      880.00|
|WR-DVD           |   122.00|    7|      854.00|
|1TB SATA HDD     |   437.00|    7|     3059.00|
|RE-DVD ROM       |   144.00|    4|      576.00|
|Gaming keyboard  |   550.00|    6|     3300.00|
|DDR3 4GB RAM     |   143.00|    7|     1001.00|
+-----------------+---------+-----+------------+
                              GROSS   59,928.00 
                       DISCOUNT(5%)    2,996.40 
                             RETURN    9,670.00 
                            PAYABLE   47,261.60 
                               CASH   20,000.00 
                             CHEQUE   15,000.00 
                    CREDIT(BALANCE)   12,261.60 


   ---------------------   --------------------- 
      CASH COLLECTOR         GOODS RECEIVED BY   
           soulution by clough.com   

the code for above output is below:

String company = ""
            + "PLATINUM COMPUTERS(PVT) LTD\n"
            + "NO 20/B, Main Street, Kandy, Sri Lanka.\n"
            + "Land: 812254630 Mob: 712205220 Fax: 812254639\n"
            + " \n"
            + "CUSTOMER INVOICE\n"
            + " \n";
    List<String> t1Headers = Arrays.asList("INFO", "CUSTOMER");
    List<List<String>> t1Rows = Arrays.asList(
            Arrays.asList("DATE: 2015-9-8", "ModernTec Distributors"),
            Arrays.asList("TIME: 10:53:AM", "MOB: +94719530398"),
            Arrays.asList("BILL NO: 12", "ADDRES: No 25, Main Street, Kandy."),
            Arrays.asList("INVOICE NO: 458-80-108", "")
    );
    String t2Desc = "SELLING DETAILS";
    List<String> t2Headers = Arrays.asList("ITEM", "PRICE($)", "QTY", "VALUE");
    List<List<String>> t2Rows = Arrays.asList(
            Arrays.asList("Optical mouse", "120.00", "20", "2400.00"),
            Arrays.asList("Gaming keyboard", "550.00", "30", "16500.00"),
            Arrays.asList("320GB SATA HDD", "220.00", "32", "7040.00"),
            Arrays.asList("500GB SATA HDD", "274.00", "13", "3562.00"),
            Arrays.asList("1TB SATA HDD", "437.00", "11", "4807.00"),
            Arrays.asList("RE-DVD ROM", "144.00", "29", "4176.00"),
            Arrays.asList("DDR3 4GB RAM", "143.00", "13", "1859.00"),
            Arrays.asList("Blu-ray DVD", "94.00", "28", "2632.00"),
            Arrays.asList("WR-DVD", "122.00", "34", "4148.00"),
            Arrays.asList("Adapter", "543.00", "28", "15204.00")
    );
    List<Integer> t2ColWidths = Arrays.asList(17, 9, 5, 12);
    String t3Desc = "RETURNING DETAILS";
    List<String> t3Headers = Arrays.asList("ITEM", "PRICE($)", "QTY", "VALUE");
    List<List<String>> t3Rows = Arrays.asList(
            Arrays.asList("320GB SATA HDD", "220.00", "4", "880.00"),
            Arrays.asList("WR-DVD", "122.00", "7", "854.00"),
            Arrays.asList("1TB SATA HDD", "437.00", "7", "3059.00"),
            Arrays.asList("RE-DVD ROM", "144.00", "4", "576.00"),
            Arrays.asList("Gaming keyboard", "550.00", "6", "3300.00"),
            Arrays.asList("DDR3 4GB RAM", "143.00", "7", "1001.00")
    );
    String summary = ""
            + "GROSS\n"
            + "DISCOUNT(5%)\n"
            + "RETURN\n"
            + "PAYABLE\n"
            + "CASH\n"
            + "CHEQUE\n"
            + "CREDIT(BALANCE)\n";
    String summaryVal = ""
            + "59,928.00\n"
            + "2,996.40\n"
            + "9,670.00\n"
            + "47,261.60\n"
            + "20,000.00\n"
            + "15,000.00\n"
            + "12,261.60\n";
    String sign1 = ""
            + "---------------------\n"
            + "CASH COLLECTOR\n";
    String sign2 = ""
            + "---------------------\n"
            + "GOODS RECEIVED BY\n";
    String advertise = "soulution by clough.com";

    //bookmark
    Board b = new Board(48);
    b.setInitialBlock(new Block(b, 46, 7, company).allowGrid(false).setBlockAlign(Block.BLOCK_CENTRE).setDataAlign(Block.DATA_CENTER));
    b.appendTableTo(0, Board.APPEND_BELOW, new Table(b, 48, t1Headers, t1Rows));
    b.getBlock(3).setBelowBlock(new Block(b, 46, 1, t2Desc).setDataAlign(Block.DATA_CENTER));
    b.appendTableTo(5, Board.APPEND_BELOW, new Table(b, 48, t2Headers, t2Rows, t2ColWidths));
    b.getBlock(10).setBelowBlock(new Block(b, 46, 1, t3Desc).setDataAlign(Block.DATA_CENTER));
    b.appendTableTo(14, Board.APPEND_BELOW, new Table(b, 48, t3Headers, t3Rows, t2ColWidths));
    Block summaryBlock = new Block(b, 35, 9, summary).allowGrid(false).setDataAlign(Block.DATA_MIDDLE_RIGHT);
    b.getBlock(19).setBelowBlock(summaryBlock);
    Block summaryValBlock = new Block(b, 12, 9, summaryVal).allowGrid(false).setDataAlign(Block.DATA_MIDDLE_RIGHT);
    summaryBlock.setRightBlock(summaryValBlock);
    Block sign1Block = new Block(b, 24, 7, sign1).setDataAlign(Block.DATA_BOTTOM_MIDDLE).allowGrid(false);
    summaryBlock.setBelowBlock(sign1Block);
    sign1Block.setRightBlock(new Block(b, 24, 7, sign2).setDataAlign(Block.DATA_BOTTOM_MIDDLE).allowGrid(false));
    sign1Block.setBelowBlock(new Block(b, 48, 3, advertise).setDataAlign(Block.DATA_CENTER).allowGrid(false));
    //b.showBlockIndex(true);
    System.out.println(b.invalidate().build().getPreview());

Now the problem I am facing is that I don't want the Returning details Section from the invoice. I simply want to add company heading section than info and customer section, then selling details and total only.

I am writing my code where I have made changes according to my requirements but I am unable to cut the section of return details and Sign Section. below is my code:

          String company = ""
            + "V.K Autos Larkana\n"
            + "Near Rehmaniya Masjid Larkana\n"
            + "Police Shopping Center Larkana\n"
            + "Cell: 0334-3269198, 0333-3910951\n"
            + " \n"
            + "CUSTOMER INVOICE\n"
            + " \n";

    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

    List<String> t1Headers = Arrays.asList("INFO", "CUSTOMER");
    List<List<String>> t1Rows = Arrays.asList(
            Arrays.asList("DATE: " + date + "", "" + txt_cnam.getText()),
            Arrays.asList("TIME: " + sdf.format(cal.getTime()) + "", "Bill No:" + billno + "")
    );
    String t2Desc = "SELLING DETAILS";
    List<String> t2Headers = Arrays.asList("ITEM", "QTY", "Rate", "Total");

    List<List<String>> t2Rows = new ArrayList<List<String>>();

    for (int i = 0; i < tbl_sale.getRowCount(); i++) {
        String pid = tbl_sale.getValueAt(i, 0).toString();
        String item = tbl_sale.getValueAt(i, 1).toString();
        String quant = tbl_sale.getValueAt(i, 2).toString();
        String rate = tbl_sale.getValueAt(i, 3).toString();
        String rs = tbl_sale.getValueAt(i, 4).toString();
        ArrayList<String> temp = new ArrayList<String>();
        temp.add(item);
        temp.add(quant);
        temp.add(rate);
        temp.add(rs);
        t2Rows.add(temp);
    }
    List<Integer> t2ColWidths = Arrays.asList(17, 9, 5, 12);
    String t3Desc = "Sub Total";
    List<String> t3Headers = Arrays.asList("", "", "", "");
    List<List<String>> t3Rows = Arrays.asList(
            Arrays.asList("WR-DVD", "122.00", "7", "854.00")
    );

    String summary = ""
            + "Sub Total\n";

    String summaryVal = ""
            + txt_total.getText() + "\n";
    String sign1 = ""
            + "------------Thank You-------------\n";
    String sign2 = ""
            + "-We value your visit-\n";
    String advertise = "-We value your visit-";
    try {
        Board b = new Board(48);
        b.setInitialBlock(new Block(b, 46, 7, company).allowGrid(false).setBlockAlign(Block.BLOCK_CENTRE).setDataAlign(Block.DATA_CENTER));
        b.appendTableTo(0, Board.APPEND_BELOW, new Table(b, 48, t1Headers, t1Rows));
        b.getBlock(3).setBelowBlock(new Block(b, 46, 1, t2Desc).setDataAlign(Block.DATA_CENTER));
        b.appendTableTo(5, Board.APPEND_BELOW, new Table(b, 48, t2Headers, t2Rows, t2ColWidths));
        b.getBlock(10).setBelowBlock(new Block(b, 46, 1, t3Desc).setDataAlign(Block.DATA_CENTER));
        b.appendTableTo(14, Board.APPEND_BELOW, new Table(b, 48, t3Headers, t3Rows, t2ColWidths));
        Block summaryBlock = new Block(b, 35, 3, summary).allowGrid(false).setDataAlign(Block.DATA_MIDDLE_RIGHT);
        b.getBlock(19).setBelowBlock(summaryBlock);
        Block summaryValBlock = new Block(b, 12, 3, summaryVal).allowGrid(false).setDataAlign(Block.DATA_MIDDLE_RIGHT);
        summaryBlock.setRightBlock(summaryValBlock);
        Block sign1Block = new Block(b, 24, 7, sign1).setDataAlign(Block.DATA_BOTTOM_MIDDLE).allowGrid(false);
        summaryBlock.setBelowBlock(sign1Block);
        sign1Block.setRightBlock(new Block(b, 24, 7, sign2).setDataAlign(Block.DATA_BOTTOM_MIDDLE).allowGrid(false));
        sign1Block.setBelowBlock(new Block(b, 48, 3, advertise).setDataAlign(Block.DATA_CENTER).allowGrid(false));
        System.out.println(b.invalidate().build().getPreview());

and the output of above code is:

                  V.K Autos Larkana               
      Near Rehmaniya Masjid Larkana         
     Police Shopping Center Larkana         
    Cell: 0334-3269198, 0333-3910951        

            CUSTOMER INVOICE                

+-----------------------+----------------------+
|INFO                   |CUSTOMER              |
+-----------------------+----------------------+
|DATE: 2016/01/27       |Mohammad Rafi Abro    |
|TIME: 23:23:49         |Bill No:9             |
+-----------------------+----------------------+
|                SELLING DETAILS               |
+-----------------+---------+-----+------------+
|ITEM             |      QTY| Rate|       Total|
+-----------------+---------+-----+------------+
|nuts             |       50|   25|        1250|
+-----------------+---------+-----+------------+
|                   Sub Total                  |
+-----------------+---------+-----+------------+
|                 |         |     |            |
+-----------------+---------+-----+------------+
|WR-DVD           |   122.00|    7|      854.00|
+-----------------+---------+-----+------------+
                          Sub Total        1250 


   ------------Thank You--------                        
    -We value your visit-
    -We value your visit-    

but I want output like:

                  V.K Autos Larkana               
      Near Rehmaniya Masjid Larkana         
     Police Shopping Center Larkana         
    Cell: 0334-3269198, 0333-3910951        

            CUSTOMER INVOICE                

+-----------------------+----------------------+
|INFO                   |CUSTOMER              |
+-----------------------+----------------------+
|DATE: 2016/01/27       |Mohammad Rafi Abro    |
|TIME: 23:23:49         |Bill No:9             |
+-----------------------+----------------------+
|                SELLING DETAILS               |
+-----------------+---------+-----+------------+
|ITEM             |      QTY| Rate|       Total|
+-----------------+---------+-----+------------+
|nuts             |       50|   25|        1250|
+-----------------+---------+-----+------------+                  
                          Sub Total        1250

     ===== Thank you for your kind visit ===

and I want to reduce its width too, current board width is 48, but when I changes its value to 40 its also showing me error :( please can any one help me out through this.


Solution

  • Finally, I did it myself after working all night on the code :) Well, Thanks to Mr. Clough for WAGU example.

    my code is here below:

    String company = ""
                + "V.K Autos Larkana\n"
                + "Near Rehmaniya Masjid Larkana\n"
                + "Police Shopping Center Larkana\n"
                + "Cell: 0334-3269198, 0333-3910951\n"
                + " \n"
                + "CUSTOMER INVOICE"
                + " ";
    
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    
        List<String> t1Headers = Arrays.asList("INFO", "CUSTOMER");
        List<List<String>> t1Rows = Arrays.asList(
                Arrays.asList("DATE: " + date + "", "" + txt_cnam.getText()),
                Arrays.asList("TIME: " + sdf.format(cal.getTime()) + "", "Bill No:" + billno + "")
        );
        String t2Desc = "SELLING DETAILS";
        List<String> t2Headers = Arrays.asList("ITEM", "QTY", "Rate", "Total");
    
        List<List<String>> t2Rows = new ArrayList<List<String>>();
    
        for (int i = 0; i < tbl_sale.getRowCount(); i++) {
            String pid = tbl_sale.getValueAt(i, 0).toString();
            String item = tbl_sale.getValueAt(i, 1).toString();
            String quant = tbl_sale.getValueAt(i, 2).toString();
            String rate = tbl_sale.getValueAt(i, 3).toString();
            String rs = tbl_sale.getValueAt(i, 4).toString();
            ArrayList<String> temp = new ArrayList<String>();
            temp.add(item);
            temp.add(quant);
            temp.add(rate);
            temp.add(rs);
            t2Rows.add(temp);
        }
        List<Integer> t2ColWidths = Arrays.asList(16, 5, 7, 9);
        String t3Desc = "Sub Total";
        List<String> t3Headers = Arrays.asList("", "", "", "");
        List<List<String>> t3Rows = Arrays.asList(
                Arrays.asList("WR-DVD", "122.00", "7", "854.00")
        );
    
        String summary = ""
                + "Sub Total\n";
    
        String summaryVal = ""
                + txt_total.getText() + "\n";
        String sign1 = ""
                +"------Thank you for your visit------\n";
        String sign2 = ""
                + "-We value your visit-\n";
        String advertise = "******** Soulution by AbroSoft *******\n* abrosoft@outlook.com # 03337584273 *";
        try {
            Board b = new Board(48);
            b.setInitialBlock(new Block(b, 40, 6, company).allowGrid(true).setBlockAlign(Block.BLOCK_LEFT).setDataAlign(Block.DATA_CENTER));
            b.appendTableTo(0, Board.APPEND_BELOW, new Table(b, 42, t1Headers, t1Rows));
            b.getBlock(3).setBelowBlock(new Block(b, 40, 1, t2Desc).setDataAlign(Block.DATA_CENTER));
            b.appendTableTo(5, Board.APPEND_BELOW, new Table(b, 40, t2Headers, t2Rows, t2ColWidths));
            Block summaryBlock = new Block(b, 30, 1, summary).setDataAlign(Block.DATA_TOP_RIGHT);
            b.getBlock(10).setBelowBlock(summaryBlock);
            Block summaryValBlock = new Block(b, 9, 1, summaryVal).setDataAlign(Block.DATA_TOP_RIGHT);
            summaryBlock.setRightBlock(summaryValBlock);
            Block sign1Block = new Block(b, 40, 1, sign1).setDataAlign(Block.DATA_CENTER);
            b.getBlock(14).setBelowBlock(sign1Block);
            Block sign2Block = new Block(b, 40, 2, advertise).setDataAlign(Block.DATA_CENTER);
            b.getBlock(16).setBelowBlock(sign2Block);
            System.out.println(b.invalidate().build().getPreview());
    

    and now the output is like what I need :). output is below:

      +----------------------------------------+      
      |            V.K Autos Larkana           |      
      |      Near Rehmaniya Masjid Larkana     |      
      |     Police Shopping Center Larkana     |      
      |    Cell: 0334-3269198, 0333-3910951    |      
      |                                        |      
      |            CUSTOMER INVOICE            |      
      +--------------------+-------------------+      
      |INFO                |CUSTOMER           |      
      +--------------------+-------------------+      
      |DATE: 2016/01/28    |Mohammad Rafi Abro |      
      |TIME: 15:31:15      |Bill No:10         |      
      +--------------------+-------------------+      
      |             SELLING DETAILS            |      
      +----------------+-----+-------+---------+      
      |ITEM            |  QTY|   Rate|    Total|      
      +----------------+-----+-------+---------+      
      |nuts            |   12|     25|      300|      
      |70 CC           |   12|   7000|    84000|      
      |125 CC          |   13|  95000|  1235000|      
      |12              |   25|   2500|    62500|      
      +----------------+-----+-------+---------+      
      |                     Sub Total|  1381800|      
      +------------------------------+---------+      
      |  ------Thank you for your visit------  |      
      +----------------------------------------+      
      | ******** Soulution by AbroSoft ******* |      
      | * abrosoft@outlook.com # 03337584273 * |      
      +----------------------------------------+  
    

    Well, Thanks again Mr. CLOUGH. :)