<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.csc.library.utility.DHMConvert"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.Iterator"%> <%@page import="java.util.Vector"%> <%@page import="java.util.*"%> <%@page import="com.csc.library.report.ReportUDF"%> <%@page import="javax.servlet.jsp.jstl.sql.Result"%> <%@page import="java.io.FileOutputStream"%> <%@page import="com.csc.library.utilities.MyLog"%> <%@page import="java.io.OutputStream"%> <%@page import="java.io.ByteArrayOutputStream"%> <%@page import="java.net.URLDecoder"%> <%@page import="java.text.DecimalFormat"%> <%@page import="java.net.URLEncoder"%> <%@page import="java.util.HashMap"%> <%@page import="java.text.SimpleDateFormat" %> <%@page import="java.util.Locale" %> <%@page import="java.util.Date" %> <%@page import="java.util.GregorianCalendar" %> <%@page import="com.csc.library.database.DataSet"%> <%@page import="com.csc.library.session.InitialInquiry"%> <%@page import="com.csc.library.session.InitialRecord"%> <%@page import="com.csc.library.utilities.UProfile"%> <%@page import="com.csc.library.utilities.CscCalendar"%> <%@page import="com.csc.library.session.DbInquiry"%> <%@page import="com.csc.library.session.DbRecord"%> <%@page import="com.csc.library.utilities.CheckNull"%> <%@page import="com.csc.library.entry.HelpEntry"%> <%@page import="com.itextpdf.text.*"%> <%@page import="com.itextpdf.text.pdf.*"%> <%@page import="java.io.ByteArrayOutputStream" %> <%@page import="com.csc.library.session.InitialEnvironment" %> <%@page import="com.csc.library.database.MyHashMap" %> <jsp:useBean id="TRRE034_PDF" class="com.csc.library.system.Task" scope="page" /> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>Report</title> </head> <body> Not found data <% TRRE034_PDF.setChannel(request, response); HelpEntry screen = (HelpEntry) TRRE034_PDF.process("HelpEntry", "TRRE034_PDF"); CheckNull chk = new CheckNull(); DecimalFormat df = new DecimalFormat("#.00"); MyHashMap myhash = new MyHashMap(); String crsid = chk.chkNullString(request.getParameter("__crsid")); String listTraining = chk.chkNullString(request.getParameter("__trainingidList")); String trainList = "'" + listTraining.replaceAll(",","','") + "'"; screen.setMaxLine(-1); screen.inq.setFilter("CRSID ='"+crsid+"'"); screen.process(); ByteArrayOutputStream baos = new ByteArrayOutputStream();//72 Document document = new Document(PageSize.A4, 50, 30, 28, 36); float[] sizeColumn = new float[] {}; PdfWriter.getInstance(document, baos); document.open(); document.addTitle("Document Title"); BaseFont bf = BaseFont.createFont(application.getRealPath("FONTS/THSarabun.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED); BaseFont bfHead = BaseFont.createFont(application.getRealPath("FONTS/THSarabun.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true); Font font = new Font(bf, 14); Font fontbold = new Font(bf, 14, Font.BOLD); Font fonthead = new Font(bfHead, 16, Font.BOLD | Font.UNDERLINE); Font fontTitle = new Font(bfHead, 16, Font.BOLD); // set vlign middle Phrase content = new Phrase("Blah blah blah", font); Float fontSize = content.getFont().getSize(); Float capHeight = content.getFont().getBaseFont().getFontDescriptor(BaseFont.CAPHEIGHT, fontSize); boolean hasData = false; if(screen.getInquiry().recCount() > 0) { hasData = true; screen.nextRec(); screen.referLangOff(); DbInquiry dbinq = null; DbInquiry dbtopic = null; int i = 0; int j = 0; try{ CscCalendar calendar = new CscCalendar(); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a", Locale.ENGLISH); GregorianCalendar gc= new GregorianCalendar(); dbinq = (DbInquiry) screen.getInquiry().getCurrentDbRecord().getChild("HTRAINING"); dbtopic = (DbInquiry) screen.getInquiry().getCurrentDbRecord().getChild("MCOURSEDETAIL"); dbinq.setFilter("trainingid in("+trainList+")"); // --------------- Report Header ----------------- sizeColumn = new float[] {60.0f,40.0f}; PdfPTable detail = new PdfPTable(2); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); setCellHeight(22f); PdfPCell cellDetail; PdfPCell cellDetail2; PdfPCell advanceCellDetail; InitialEnvironment inv = new InitialEnvironment("GLOBAL"); Image img = null; Image img2 = null; img = Image.getInstance(inv.getValue("TRAINING_UPLOAD-dir")+"PICTURE/chkbox.png"); img2 = Image.getInstance(inv.getValue("TRAINING_UPLOAD-dir")+"PICTURE/chkbox1.png"); cellDetail = new PdfPCell(img, true); cellDetail2 = new PdfPCell(img2, true); cellDetail.setBorder(Rectangle.NO_BORDER); cellDetail.setVerticalAlignment(Element.ALIGN_MIDDLE); cellDetail2.setBorder(Rectangle.NO_BORDER); cellDetail2.setVerticalAlignment(Element.ALIGN_MIDDLE); setPadding(0.5f); setPaddingBottom(2f); detail.addCell( getCellData("แบบ ฝย/ฝป 2-1", fontTitle, true, "RIGHT", "MIDDLE", 2, 0)); detail.addCell( getCellData("รายละเอียดเกี่ยวกับหลักสูตรและค่าใช้จ่ายในการฝึกอบรม", fontTitle, true, "CENTER", "MIDDLE", 2, 0)); detail.addCell( getCellData("ฝึกยกระดับฝีมือแรงงานและฝึกเปลี่ยนสาขาอาชีพ ", fontTitle, true, "RIGHT", "MIDDLE", 1, 0)); detail.addCell( getCellData(" กรณีเป็นผู้ดําเนินการฝึกเอง", fonthead, true, "LEFT", "MIDDLE", 1, 0)); detail.addCell( getCellData(" ", fontTitle, true, "CENTER", "MIDDLE", 2, 0)); document.add(detail); // --------------- ข้อ 1 ----------------- sizeColumn = new float[] {4.5f,29.0f,3.0f,2.8f,1.2f}; detail = new PdfPTable(5); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("1. ชื่อหลักสูตร ", font, true, "LEFT", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(screen.getDataLabel("MCOURSE","CRSDESC"), font, true, "LEFT", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); detail.addCell( getCellData("จำนวน", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(String.valueOf(dbinq.recCount()), font, true, "CENTER", "MIDDLE", 1, 0, true) ); detail.addCell( getCellData("รุ่น", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 5, 0) ); document.add(detail); // --------------- ข้อ 2 ----------------- sizeColumn = new float[] {1.0f,99.0f}; detail = new PdfPTable(2); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("2. วัตถุประสงค์ของหลักสูตร ", font, true, "LEFT", "MIDDLE", 2, 0) ); // --------------- new line ----------------- //setCellHeight(60f); String[] objarr = screen.getDataLabel("objective").split(","); for(int cc=0;cc < objarr.length;cc++){ detail.addCell( getCellData(" ", font, true, "LEFT", "TOP", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(objarr[cc], font, true, "LEFT", "MIDDLE", 1, 0, true) ); } setPaddingLeft(0.5f); detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 2, 0) ); document.add(detail); // --------------- ข้อ 3.1 ----------------- sizeColumn = new float[] {7.2f,2.5f,24.8f}; detail = new PdfPTable(3); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); setCellHeight(22f); dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); detail.addCell( getCellData("3. ระยะเวลาในการฝึกอบรม", font, true, "LEFT", "MIDDLE", 1, 0) ); detail.addCell( getCellData(screen.getDataLabel("MCOURSE","COURSE_HOURS"), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(3.0f); detail.addCell( getCellData("ชั่วโมง (ฝึกยกระดับไม่น้อยกว่า 6 ช.ม. , ฝึกเปลี่ยนสาขาอาชีพไม่น้อยกว่า 18 ช.ม.)", font, true, "LEFT", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); document.add(detail); // --------------- ข้อ 3.2 ----------------- sizeColumn = new float[] {1.2f,1.0f,2.2f,0.5f,7.0f,1.4f,14.1f}; detail = new PdfPTable(7); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); setCellHeight(22f); i=0; while(dbinq.next()){ i++; CscCalendar classdatefrm = new CscCalendar(dbinq.getString("classdatefrm")); CscCalendar classdateto = new CscCalendar(dbinq.getString("classdateto")); detail.addCell( getCellData("รุ่นที่", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(2.0f); detail.addCell( getCellData(String.valueOf(i), font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ระหว่างวันที่", font, true, "left", "MIDDLE", 2, 0) ); detail.addCell( getCellData(classdatefrm.getThaiFullDDMMYYYY(), font, true, "center", "MIDDLE", 1, 0, true) ); detail.addCell( getCellData("ถึง", font, true, "center", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(classdateto.getThaiFullDDMMYYYY(), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); } detail.addCell( getCellData(" ", font, true, "center", "MIDDLE", 7, 0) ); // --------------- ข้อ 4 ----------------- detail.addCell( getCellData("4. สถานที่ฝึกอบรม ", font, true, "LEFT", "MIDDLE", 8, 0) ); dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ i++; detail.addCell( getCellData("รุ่นที่", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(2.0f); detail.addCell( getCellData(String.valueOf(i), font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(dbinq.getString("MTRROOM","roomdesc")+" "+dbinq.getString("MTRLOCATION","locdesc"), font, true, "left", "MIDDLE", 6, 0, true) ); setPaddingLeft(0.5f); } detail.addCell( getCellData(" ", font, true, "center", "MIDDLE", 8, 0) ); document.add(detail); // --------------- ข้อ 5 ----------------- sizeColumn = new float[] {1.0f,0.6f,2.2f,2.0f,1.2f,1.2f,2.5f,1.2f,1.2f,2.5f,6.2f}; detail = new PdfPTable(11); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("5. จำนวนลูกจ้างที่เข้าอบรม (ไม่เกิน 50 คน ต่อรุ่น)", font, true, "LEFT", "MIDDLE", 13, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ i++; detail.addCell( getCellData("รุ่นที่ ", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(2.0f); detail.addCell( getCellData(String.valueOf(i), font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("จำนวนรวม ", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(String.valueOf(chk.chkNullStringToInt(dbinq.getString("HTRAINING","TOTALMALE"))+chk.chkNullStringToInt(dbinq.getString("HTRAINING","TOTALFEMALE"))), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(5.0f); detail.addCell( getCellData("คน", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); setPaddingRight(5.0f); detail.addCell( getCellData("ชาย", font, true, "right", "MIDDLE", 1, 0) ); setPaddingRight(0.5f); detail.addCell( getCellData(chk.chkNullString(dbinq.getString("HTRAINING","TOTALMALE"),"0"), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(5.0f); detail.addCell( getCellData("คน", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); setPaddingRight(5.0f); detail.addCell( getCellData("หญิง", font, true, "right", "MIDDLE", 1, 0) ); setPaddingRight(0.5f); detail.addCell( getCellData(chk.chkNullString(dbinq.getString("HTRAINING","TOTALFEMALE"),"0"), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(5.0f); detail.addCell( getCellData("คน", font, true, "LEFT", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 11, 0) ); document.add(detail); // --------------- ข้อ 6 ----------------- sizeColumn = new float[] {1.2f,0.9f,22.7f}; detail = new PdfPTable(3); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); setPaddingTop(2f); setPaddingBottom(2f); detail.addCell( getCellData("6. คุณสมบัติของผู้เข้ารับการฝึกอบรม (ผู้ปฏิบัติ/ผู้บริหาร และคุณสมบัติที่สถานประกอบกิจการกำหนด) ", font, true, "LEFT", "MIDDLE", 3, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ i++; detail.addCell( getCellData("รุ่นที่ ", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(2.0f); detail.addCell( getCellData(String.valueOf(i), font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(dbinq.getString("property"), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); } detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 3, 0) ); document.add(detail); // --------------- ข้อ 7 ----------------- sizeColumn = new float[] {0.4f,0.5f,0.5f,2.0f,4.0f,0.6f,3.0f,2.1f,12.9f}; detail = new PdfPTable(9); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("7. วิทยากร ", font, true, "LEFT", "MIDDLE", 9, 0) ); String trainnerList = ""; int count_trainner = 0; String sql = ""; // here DbInquiry dbtrainner0 = new InitialInquiry(screen.getUProfile()).getDbInquiry("MTRAINER"); DataSet ds = new DataSet(); // --------------- new line วิยากรภายใน----------------- sql = "select DISTINCT trainerid from htraintrner where trainingid in("+trainList+") and trainerid in (select trainerid from mtrainer where trtype ='I')"; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINTRNER"); ds.initConnection(screen.getUProfile()); while(ds.next()){ count_trainner++; trainnerList += trainnerList.equals("")?"'"+ds.getString("trainerid")+"'":",'"+ds.getString("trainerid")+"'"; } detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 1, 0) ); detail.addCell( cellDetail ); detail.addCell( getCellData(" วิทยากรภายใน ", font, true, "LEFT", "TOP", 7, 0) ); i=0; if(count_trainner > 0){ dbtrainner0.setFilter("trainerid in ("+trainnerList+")"); dbtrainner0.refresh(); while(dbtrainner0.next()){ i++; setPaddingRight(2.0f); detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 3, 0) ); setPaddingRight(0.5f); setPaddingLeft(7.0f); detail.addCell( getCellData(" "+dbtrainner0.getString("fullname"), font, true, "left", "MIDDLE", 4, 0, true) ); setPaddingLeft(0.5f); detail.addCell( getCellData(" ตำแหน่ง ", font, true, "center", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(dbtrainner0.getString("trposition"), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.1f); } }else{ for(i=1;i<=2;i++){ setPaddingRight(2.0f); detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 3, 0) ); setPaddingRight(0.5f); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 4, 0, true) ); detail.addCell( getCellData(" ตำแหน่ง ", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 1, 0, true) ); } } // --------------- new line วิยากรภายนอก----------------- sql = "select DISTINCT trainerid from htraintrner where trainingid in("+trainList+") and trainerid in (select trainerid from mtrainer where trtype ='E')"; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINTRNER"); ds.initConnection(screen.getUProfile()); count_trainner = 0; trainnerList = ""; while(ds.next()){ count_trainner++; trainnerList += trainnerList.equals("")?"'"+ds.getString("trainerid")+"'":",'"+ds.getString("trainerid")+"'"; } detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 1, 0) ); detail.addCell( cellDetail ); detail.addCell( getCellData(" วิทยากรภายนอก ", font, true, "LEFT", "TOP", 7, 0) ); i=0; if(count_trainner > 0){ dbtrainner0.setFilter("trainerid in ("+trainnerList+")"); dbtrainner0.refresh(); while(dbtrainner0.next()){ i++; setPaddingRight(2.0f); detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 3, 0) ); setPaddingRight(0.5f); setPaddingLeft(7.0f); detail.addCell( getCellData(" "+dbtrainner0.getString("fullname"), font, true, "left", "MIDDLE", 4, 0, true) ); setPaddingLeft(0.5f); detail.addCell( getCellData(" ตำแหน่ง ", font, true, "center", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(dbtrainner0.getString("trposition"), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); } }else{ for(i=1;i<=2;i++){ setPaddingRight(2.0f); detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 3, 0) ); setPaddingRight(0.5f); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 4, 0, true) ); detail.addCell( getCellData(" ตำแหน่ง ", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 1, 0, true) ); } } detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 9, 0) ); document.add(detail); // --------------- ข้อ 8 ----------------- sizeColumn = new float[] {1.1f,11.0f,2.8f,18.0f}; detail = new PdfPTable(4); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("8. เจ้าหน้าที่ผู้จัดการฝึกอบรม ", font, true, "LEFT", "MIDDLE", 9, 0) ); // --------------- new line ----------------- DbInquiry dbtrainres = new InitialInquiry(screen.getUProfile()).getDbInquiry("HTRAINRESP"); DbInquiry dbempres = new InitialInquiry(screen.getUProfile()).getDbInquiry("MEMPLOYEE"); DbInquiry dbposition = new InitialInquiry(screen.getUProfile()).getDbInquiry("MPOSITION"); dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ dbtrainres.setFilter("trainingid = '"+dbinq.getString("trainingid")+"'"); dbtrainres.refresh(); while(dbtrainres.next()){ dbempres.setFilter("employeeid = '"+dbtrainres.getString("respid")+"'"); dbempres.refresh(); dbempres.putChild(dbposition); dbempres.next(); i++; detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(" "+dbempres.getString("fullname"), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); detail.addCell( getCellData(" ตำแหน่ง ", font, true, "center", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData(dbempres.getString("mposition","tdesc"), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); } } if(dbtrainres.recCount() == 0){ for(i=1;i<=2;i++){ detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ตำแหน่ง ", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 1, 0) ); } } detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 4, 0) ); document.add(detail); // --------------- ข้อ 9 ----------------- sizeColumn = new float[] {0.3f,0.9f,6.0f,0.8f,0.7f,0.5f}; detail = new PdfPTable(6); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("9. หัวข้อและเนื้อหาวิชา ", font, true, "LEFT", "MIDDLE", 7, 0) ); // --------------- new line ----------------- dbtopic.refresh(); i=0; while(dbtopic.next()){ i++; detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData("หัวข้อวิชา", font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(dbtopic.getString("TDESC"), font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ระยะเวลา", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(dbtopic.getString("HOUR"), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(2.0f); detail.addCell( getCellData("ชั่วโมง", font, true, "left", "MIDDLE", 1, 0) ); // --------------- new line ----------------- detail.addCell( getCellData("", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData("เนื้อหาวิชา", font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(dbtopic.getString("TDETAIL"), font, true, "left", "MIDDLE", 4, 0, true) ); setPaddingLeft(0.5f); } if(dbtopic.recCount() == 0){ for(i=1;i<=2;i++){ detail.addCell( getCellData("("+i+")", font, true, "right", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData("หัวข้อวิชา", font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "left", "MIDDLE", 1, 0, true) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ระยะเวลา", font, true, "center", "MIDDLE", 1, 0) ); detail.addCell( getCellData(" ", font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(2.0f); detail.addCell( getCellData("ชั่วโมง", font, true, "left", "MIDDLE", 1, 0) ); // --------------- new line ----------------- detail.addCell( getCellData("", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(7.0f); detail.addCell( getCellData("เนื้อหาวิชา", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 4, 0, true) ); } } detail.addCell( getCellData("", font, true, "left", "MIDDLE", 6, 0) ); document.add(detail); // --------------- ข้อ 10 ----------------- sizeColumn = new float[] {6.5f,6.5f,28.0f,59.0f}; detail = new PdfPTable(4); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); setCellHeight(22f); detail.addCell( getCellData("10. ค่าใช้จ่ายในการฝึกอบรม (กรณีค่าใช้จ่ายแต่ละรุ่นไม่เท่ากันให้แยกรายละเอียดค่าใช้จ่ายต่อรุ่น) ", font, true, "LEFT", "MIDDLE", 16, 0) ); double expense = 0.00; double totalexp = 0.00; j=0; // --------------- new line 10.1----------------- setCellHeight(37f); setPaddingLeft(7.3f); detail.addCell( getCellData("10.1", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("เงินค่าตอบแทนวิทยากรเท่าที่จ่ายจริง หรือ ตอบแทนเป็นของขวัญสำหรับวิทยากรมูลค่า ไม่เกินห้าพันบาท / คน / รุ่น อย่างใดอย่างหนึ่ง", font, true, "left", "TOP", 4, 0) ); setCellHeight(22f); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='1'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.2----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.2", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าลิขสิทธิ์ของหลักสูตรที่ใช้ในการฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='2'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.3----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.3", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าจ้างล่ามระหว่างการฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='3'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.4----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.4", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าแปลเอกสารประกอบการฝึกอบรม หรือตำรา", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='4'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.5----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.5", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าเอกสารประกอบการฝึกอบรม หรือตำรา เป็นค่าจ้างจัดทำหรือซื้อมาเป็นเล่ม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='5'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.6----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.6", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าจ้างถ่ายเอกสารประกอบการฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='6'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.7----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.7", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าถ่าย ล้าง อัดและขยายรูปภาพ ค่าบันทึกภาพและเสียงที่เกี่ยวข้องกับการฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='7'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.8----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(52f); detail.addCell( getCellData("10.8", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าจัดทำหรือค่าเช่าสื่อการฝึกอบรม ได้แก่สื่อในลักษณะแผ่นโปร่งใส เทปเสียง เทปวีดีโอ ซีดี วีซีดี ดีวีดี ซีดี-รอม แผ่นภาพ สไลด์ และรวมถึงชุดทดลอง ชุดสาธิต หุ่นจำลองที่ไม่มีลักษณะคงสภาพเข้าข่ายเป็นการลงทุน ในกรณีเช่าสื่อการฝึกอบรม จะต้องมีระยะเวลาเช่าที่แน่นอนและสอดคล้องกับหลักสูตรที่จัดฝึกอบรม", font, true, "left", "TOP", 4, 0) ); setCellHeight(22f); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='8'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.9----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(52f); detail.addCell( getCellData("10.9", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าวัสดุ เครื่องมือต่างๆ ที่จะใช้ในการฝึกอบรมฝีมือแรงงานจะต้องมีลักษณะการใช้สอดคล้องกลับเนื้อหาวิชาในหลักสูตรนั้นๆ ทั้งนี้วัสดุ เครื่องมือ ดังกล่าวจะต้องไม่ปะปนกับที่ใช้ในการประกอบกิจการตามปกติของผู้ขอรับความเห็นชอบโดยจะต้องระบุรายการ จำนวนและราคาวัดสุ เครื่องมือนั้นให้ชัดเจน", font, true, "left", "TOP", 4, 0) ); setCellHeight(22f); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='9'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.10----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.10", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าเช่าเครื่องมือ เครื่องจักรและอุปกรณ์ที่ใช้ในการฝึกอบรม ต้องมีระยะเวลาเช่าที่แน่นอนและสอดคล้องกับหลักสูตรที่จัดฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='10'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.11----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.11", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าเช่าสถานที่จัดการฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='11'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.12----------------- setPaddingLeft(7.3f); setCellHeight(5f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.12", font, true, "left", "BOTTOM", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าเช่าที่พัก ค่าอาหาร ค่าเครื่องดื่มและอาหารว่างสำหรับผู้รับการฝึกอบรม เจ้าหน้าที่ประสานการฝึกอบรมและวิทยากร", font, true, "left", "BOTTOM", 4, 0) ); // --------------- new line ----------------- setCellHeight(20f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 1, 0) ); detail.addCell( getCellData("และวิทยากรระหว่างฝึกอบรม ยกเว้นเครื่องดื่มที่มีแอลกอฮอล์", font, true, "left", "TOP", 4, 0) ); //detail.addCell( getCellData("ยกเว้นเครื่องดื่มที่มีแอลกอฮอล์", fontbold, true, "left", "TOP", 2, 0) ); setCellHeight(22f); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='12'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.13----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.13", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าพาหนะเดินทางข้ามจังหวัดไป-กลับ ภายในประเทศเพื่อเข้ารับการฝึกอบรมไม่เกินสองเที่ยว ยกเว้นค่าเครื่องบิน", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='13'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.14----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.14", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าจ้างเหมาพาหนะ รับ-ส่ง ผู้รับการฝึกอบรม เจ้าหน้าที่ประสานการฝึกอบรม และวิทยากรระหว่างฝึกอบรม", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='14'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.15----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.15", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าจ้างเหมาพาหนะไปดูงานที่กำหนดไว้ในหลักสูตรภายในประเทศ ยกเว้นค่าแท็กซี่และค่าเครื่องบิน", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='15'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } // --------------- new line 10.16----------------- setPaddingLeft(7.3f); setCellHeight(10f); detail.addCell( getCellData(" ", font, true, "left", "TOP", 5, 0) ); setCellHeight(22f); detail.addCell( getCellData("10.16", font, true, "left", "TOP", 1, 0) ); setPaddingLeft(0.5f); detail.addCell( getCellData("ค่าพาหนะเดินทางภายในประเทศของวิทยากร", font, true, "left", "TOP", 4, 0) ); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ expense = 0.00; i++; sql = "select expgrpid,sum(used) expens from HTRAINEXP where trainingid = '"+dbinq.getString("trainingid")+"'"+ "and expid in (select expid from MEXPENSE where expgrpid in (select expgrpid from MEXPGRP where type='16'))"+ "group by expgrpid "; ds.setInfo(sql,screen.getUProfile().get("dbname"),"HTRAINEXP"); ds.initConnection(screen.getUProfile()); while(ds.next()){ expense += chk.chkNullStringToDouble(ds.getString("expens")) ; } myhash.putToSum(dbinq.getString("trainingid"),expense); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(expense==0.00?" ":df.format(expense), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(4.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } document.add(detail); sizeColumn = new float[] {45.0f,17.0f,7.5f,20.5f,10.0f}; detail = new PdfPTable(5); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); // --------------- new line 10total ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); i=0; while(dbinq.next()){ i++; totalexp = chk.chkNullStringToDouble(myhash.getString(dbinq.getString("trainingid"))); detail.addCell( getCellData("", font, true, "right", "MIDDLE", 1, 0) ); detail.addCell( getCellData(i==1?"รวมค่าใช้จ่ายทั้งหมด":"", font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(totalexp==0.0?"":df.format(totalexp), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(7.0f); detail.addCell( getCellData("บาท", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } detail.addCell( getCellData("", font, true, "left", "MIDDLE", 5, 0) ); document.add(detail); // --------------- ข้อ 11 ----------------- sizeColumn = new float[] {17.0f,7.5f,20.5f,55.0f}; detail = new PdfPTable(4); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); // --------------- new line ----------------- dbinq.setOrderBy("classdatefrm"); dbinq.refresh(); int totaltrainee = 0; i=0; while(dbinq.next()){ i++; totalexp = chk.chkNullStringToDouble(myhash.getString(dbinq.getString("trainingid"))); totaltrainee = chk.chkNullStringToInt(dbinq.getString("HTRAINING","TOTALMALE"))+chk.chkNullStringToInt(dbinq.getString("HTRAINING","TOTALFEMALE")); detail.addCell( getCellData(i==1?"11. ค่าใช้จ่ายคนละ ":"", font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData("รุ่นที่ "+i, font, true, "left", "MIDDLE", 1, 0) ); detail.addCell( getCellData(String.valueOf(totaltrainee==0?"":df.format(totalexp/totaltrainee)), font, true, "center", "MIDDLE", 1, 0, true) ); setPaddingLeft(7.0f); detail.addCell( getCellData("บาท/รุ่น", font, true, "left", "MIDDLE", 1, 0) ); setPaddingLeft(0.5f); } detail.addCell( getCellData(" ", font, true, "LEFT", "MIDDLE", 4, 0) ); document.add(detail); // --------------- ข้อ 12 ----------------- sizeColumn = new float[] {4.3f,0.4f,0.8f,0.4f,1.0f,10.0f}; detail = new PdfPTable(6); detail.setWidthPercentage(100); detail.setWidths(sizeColumn); detail.addCell( getCellData("12. หนังสือรับรองวุฒิบัตร ", font, true, "LEFT", "TOP", 1, 0) ); detail.addCell( cellDetail ); detail.addCell( getCellData(" มี ", font, true, "center", "TOP", 1, 0) ); detail.addCell( cellDetail ); detail.addCell( getCellData(" ไม่มี ", font, true, "center", "TOP", 1, 0) ); detail.addCell( getCellData(" ", font, true, "center", "TOP", 1, 0) ); detail.addCell( getCellData(" ", font, true, "center", "TOP", 6, 0) ); detail.addCell( getCellData(" ", font, true, "center", "TOP", 6, 0) ); document.add(detail); // --------------- หมายเหตุ ----------------- sizeColumn = new float[] {0.7f,0.3f,7.0f}; detail = new PdfPTable(3); detail.setWidthPercentage(100); setCellHeight(52f); detail.setWidths(sizeColumn); detail.addCell(getCellData("หมายเหตุ", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("1.", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("กรณีหลักฐานค่าใช้จ่ายที่ออกโดยร้้านค้า หรือนิติบุคคล ได้แก่ใบเสร็จรับเงินหรือใบกำกับภาษีที่มีรายการถูกต้องสมบูรณ์ พร้อมระบุชื่อหลักสูตร / รุ่น / วันที่อบรม / จำนวนเงินให้ชัดเจน (กรณีใบเสร็จรับเงินของโรงแรมให้แนบใบแสดงรายละเอียด ค่าใช้จ่ายของค่าที่พักและอาหารประกอบด้วย)", font, true, "LEFT", "TOP", 1, 0)); // --------------- New line ----------------- setCellHeight(35f); detail.addCell(getCellData("", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("2.", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("กรณีใบสำคัญรับเงินที่ให้บุคคลเป็นผู้รับเงินในการจ้างทำของหรือเป็นค่าตอบแทน เช่น ค่าตอบแทนวิทยากร ค่าจ้างทำอาหาร พร้อมแนบสำเนาบัตรประจำตัวประชาชนของผู้รับเงิน", font, true, "LEFT", "TOP", 1, 0)); // --------------- New line ----------------- setCellHeight(22f); detail.addCell(getCellData("", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("3.", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("ค่าใช้จ่ายไม่รวมภาษีมูลค่าเพิ่ม โดยมีจำนวนเหมาะสมและจำเป็นกับการฝึกอบรม", font, true, "LEFT", "TOP", 1, 0)); // --------------- New line ----------------- setCellHeight(22f); detail.addCell(getCellData("", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("4.", font, true, "CENTER", "TOP", 1, 0)); detail.addCell(getCellData("ให้รับรองความถูกต้องของสำเนาเอกสารทุกฉบับโดยผู้มีอำนาจลงนามแทนบริษัท", font, true, "LEFT", "TOP", 1, 0)); document.add(detail); } catch(Exception e) { e.printStackTrace(); } finally { document.close(); } } if(hasData){ OutputStream os = response.getOutputStream(); // Create a reader PdfReader reader = new PdfReader(baos.toByteArray()); // Create a stamper PdfStamper stamper = new PdfStamper(reader,baos); // Loop over the pages and add a header to each page // Close the stamper stamper.close(); reader.close(); response.setHeader("Expires", "0"); response.setHeader("Cache-Control","must-revalidate, post-check=0 , pre-check=0"); response.setHeader("Pragma", "public"); // setting the content type response.setContentType("application/pdf"); // the contentlength response.setContentLength(baos.size()); // write ByteArrayOutputStream to the ServletOutputStream baos.writeTo(os); os.flush(); os.close(); } %> <%! Float padding = 0.0f; Float paddingtop = 0.0f; Float paddingbottom = 0.0f; Float paddingleft = 0.0f; Float paddingright = 0.0f; Float cellheight = 0.0f; private PdfPCell getCellData(String text, Font font, boolean noborder, String horalign, String veralign, int colspan, int rowspan) { return getCellData(text, font, noborder, horalign, veralign, colspan, rowspan, false); } private PdfPCell getCellData(String text, Font font, boolean noborder, String horalign, String veralign, int colspan, int rowspan, boolean isunderline) { PdfPCell cellDetail = new PdfPCell(new Phrase(text,font)); cellDetail.setFixedHeight(cellheight); if(horalign.equalsIgnoreCase("LEFT")){ cellDetail.setHorizontalAlignment(Element.ALIGN_LEFT); } else if(horalign.equalsIgnoreCase("CENTER")){ cellDetail.setHorizontalAlignment(Element.ALIGN_CENTER); } else if(horalign.equalsIgnoreCase("RIGHT")){ cellDetail.setHorizontalAlignment(Element.ALIGN_RIGHT); } if(veralign.equalsIgnoreCase("TOP")){ cellDetail.setVerticalAlignment(Element.ALIGN_TOP); } else if(veralign.equalsIgnoreCase("MIDDLE")){ cellDetail.setVerticalAlignment(Element.ALIGN_MIDDLE); } else if(veralign.equalsIgnoreCase("BOTTOM")){ cellDetail.setVerticalAlignment(Element.ALIGN_BOTTOM); } if(padding > 0.0f){ cellDetail.setPadding(padding); } if(paddingtop > 0.0f){ cellDetail.setPaddingTop(paddingtop); } if(paddingbottom > 0.0f){ cellDetail.setPaddingBottom(paddingbottom); } if(paddingleft > 0.0f){ cellDetail.setPaddingLeft(paddingleft); } if(paddingright > 0.0f){ cellDetail.setPaddingRight(paddingright); } if(colspan > 0){ cellDetail.setColspan(colspan); } if(rowspan > 0){ cellDetail.setRowspan(rowspan); } if(noborder){ cellDetail.setBorder(Rectangle.NO_BORDER); } if(isunderline){ cellDetail.setBorder(PdfPCell.NO_BORDER); cellDetail.setCellEvent(new DottedCell(PdfPCell.BOTTOM)); } return cellDetail; } private void setPadding(Float padding) { this.padding = padding; } private void setPaddingTop(Float padding) { this.paddingtop = padding; } private void setPaddingBottom(Float padding) { this.paddingbottom = padding; } private void setPaddingLeft(Float padding) { this.paddingleft = padding; } private void setPaddingRight(Float padding) { this.paddingright = padding; } private void setCellHeight(Float height) { this.cellheight = height; } %> <%! class DottedCell implements PdfPCellEvent { private int border = 0; public DottedCell(int border) { this.border = border; } public void cellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases) { PdfContentByte canvas = canvases[PdfPTable.LINECANVAS]; canvas.saveState(); canvas.setLineDash(0, 4, 2); if ((border & PdfPCell.TOP) == PdfPCell.TOP) { canvas.moveTo(position.getRight(), position.getTop()); canvas.lineTo(position.getLeft(), position.getTop()); } if ((border & PdfPCell.BOTTOM) == PdfPCell.BOTTOM) { canvas.moveTo(position.getRight(), position.getBottom()); canvas.lineTo(position.getLeft(), position.getBottom()); } if ((border & PdfPCell.RIGHT) == PdfPCell.RIGHT) { canvas.moveTo(position.getRight(), position.getTop()); canvas.lineTo(position.getRight(), position.getBottom()); } if ((border & PdfPCell.LEFT) == PdfPCell.LEFT) { canvas.moveTo(position.getLeft(), position.getTop()); canvas.lineTo(position.getLeft(), position.getBottom()); } canvas.stroke(); canvas.restoreState(); } } %> </body> </html>