Sunday, February 21, 2016

Advance Report Birt + Groovy

Advance Report Birt + Groovy

เขียนบทความเกี่ยวกับการทำ Report รวมกับบทความนี้แล้ว มีอยู่ 3 บทความแล้วนะครับ ไครไม่เข้า คอมเม้นมาได้นะครับ (ในกรณีตอบได้จะตอบครับ มือใหม่หัดขับ OFBIZ) ในการทำ Report ในบทความนี้จะเป็น Report ที่แสดงรายการสั่งซื้อสินค้า ซึ่งจะมีการ joint ตาราง OrderHeader และ OrderItem และยังมีตาราง Product อีกตารางหนึ่ง ซึ่งตารางพวกนี้เราจะใช้ของ OFBIZ และโปรแกรมนี้สามารถที่จะสร้าง Report ตามรายชื่อที่ค้นหาได้เลย ที่มีอยู่มาทำ
*/บทความนี้จะไม่อธิบายในสิ่งที่ีได้อธิบายไปแล้วในบทความก่อนๆ ถ้าสงสัยให้ค้นหาในหน้าหลักนะครับ
เริ่มแรกจะทำการสร้าง Screen ใหม่ขึ้นมา 1 Screen แล้วสร้าง Form ค้นหา 1 Form ดังภาพตัวอย่างนี้
Screenshot from 2016-01-14 20:22:46
ต่อเราจะมาสร้างไฟล์ Script Groovy กัน ไฟล์นี้จะเก็บไว้ใน ofbiz/hot-deploy/{app คุณ}/webapp/{app คุณ}/WEB-INF/actions/ แลัวให้เขียนโค้ดในภาพนี้ ลงไป
Screenshot from 2016-01-14 20:27:57
ไฟล์ Groovy นี้เราจะใช้มันเป็นตัวรับและส่ง parameter จาก Form (ที่เรากรอก) ไปยังไฟล์ Report Birt ที่เราสร้างอย่างปลอดภัย
request map เราจะสร้างมาหาไฟล์นี้ ตามโค้ดนี้
<request-map uri=”findSaleOrderPrint”>
<security https=”true” auth=”true”/>
<event type=”groovy” path=”component://helloapp/webapp/helloapp/WEB-INF/actions/orderInfoParam.groovy” ></event>
<response name=”success” type=”view” value=”saleOrderInfo”/>
</request-map>
<view-map name=”saleOrderInfo” type=”birt” page=”component://helloapp/webapp/helloapp/forms/reports/saleOrderReport.rptdesign” content-type=”application/pdf”/>
อย่าลืม กำหนด target มาที่ request map นี้ด้วยนะจ๊ะ
หลังจากที่เราสร้าง Screen, Form ต่างๆ แล้ว ต่อมาเราจะทำ Report กัน
เริ่่มจากสร้างไฟล์ Report ,สร้าง Data Source และ Data sets เราจะกำหนด อยู่ 3 data sets ดังนี้
1.เป็น data sets ของ ตาราง OrderHeader
Screenshot from 2016-01-14 20:50:24
โค้ดของตารางนี้ ในส่วน initialize, open และ fetch ตามลำดับ
Screenshot from 2016-01-14 20:55:16Screenshot from 2016-01-14 20:56:05Screenshot from 2016-01-14 20:56:20
2. เป็น data sets ของตาราง OrderItem
Screenshot from 2016-01-14 20:50:43
โค้ดของตารางนี้ ในส่วน initialize จะเหมือนกับ data sets ของ ตาราง OrderHeader  , open และ fetch ตามลำดับ
Screenshot from 2016-01-14 21:02:42Screenshot from 2016-01-14 21:02:50
3. เป็น data sets ของการ join ตารางทั้งสอง
Screenshot from 2016-01-14 20:50:59
เมื่อสร้าง data sets เสร็จแล้วเราจะทำการสร้าง parameter เราสร้างมา 2 ตัว คือ orderIds และ orderNames ซึ่งเป็นค่าที่ส่งมาจากไฟล์ groovy ในการสร้างให้คลิก is Required ออก ด้วย เพื่อให้โปรแกรมสามารถยอมรับได้เมื่อไม่มี parameter
Screenshot from 2016-01-14 21:04:54.png
ต่อมาจะเป็นของการจัด layout กันแล้ว นี้เป็นหน้ากระดาษ Report ของเรา
Screenshot from 2016-01-14 21:10:16.png

Screenshot from 2016-01-14 21:17:40.png
ตารางสีเทานั้นให้คลิกลากจาก data sets ของ joint แล้วเลือก attribute ที่ต้องการแสดง ในส่วนของ ผลรวมนั้น ให้คลิกขวาที่ช่องที่ต้อง insert-> aggregation ดังภาพด้านล่างนี้
Screenshot from 2016-01-14 21:25:46
ในส่วนอื่นๆ ให้เลือกใน data sets ของ join มาวาง หรือเพิ่ม label หรือ text หรือตกแต่งใส่สีให้สวยงาน แล้วลอง ทดสอบว่าได้ดังที่ออกแบบไว้หรือไม่
Screenshot from 2016-01-14 21:29:47Screenshot from 2016-01-14 21:10:16
วันนี้ได้ทำการสร้าง report ที่รับค่าจากการค้นหาของผู้ใช้งานนำมาค้นหาแล้วสร้างเป็น report ออกมาเป็นไฟล์ pdf นะครับ บทความต่อไปจะได้กล่าวถึง groovy กันนะครับ

No comments:

Post a Comment

Comments system

Disqus Shortname

Disqus Shortname

Comments system