Coop report for BMS
จาก Wiki2
Joomla เป็น CMS ที่มี Extension ให้เราใช้ตั้ง 5,000 กว่ารายการ แต่ก็อาจจะมีบางสถานะการณ์ที่ Extension ทั้งหมดยังไม่รองรับความต้องการที่จำเพาะของเรา ซึ่งทำให้เราต้องพัฒนาโปรแกรมขึ้นใช้เอง แต่โปรแกรมของเราก็ยังต้องการติดต่อกับ Joomla เช่น อาจใช้ระบบสามาชิกของ Joomla เป็นต้น
วิธีการที่ดีที่สุดก็คือการเขียน extension ให้ Joomla แต่หาท่านไม่มีเวลาเรียนรู้วิธีการเขียน Extension ซึ่งมีข้อกำหนดๆที่ต้องเรียนรู้ และทำความเข้าใจ
เพื่อลดเวลาในการเรียนรู้ โครงสร้างและวิธีการเขียน Extension ก็มีคนเขียน Extension ให้ท่านได้เขียน Extension ให้ Joomla โดยไม่ต้องเสียเวลาเรียน โครงสร้างของ Extension
Extension สาระพัดประโยชน์ตัวนี้ชื่อ Jumi หากท่านมีความรู้เรื่องการเขียนโปรแกรมด้วยภาษา PHP นิดหน่อย เรียนการใช้ Jumi เล็กน้อยก็สามารถเขียน Extension ให้ Joomla ได้
Jumi มีตัวอย่างการประยุกต์หลาย ให้ดูเป็นตัวอย่างที่ http://edo.webmaster.am/jumi/tutorial แต่ในที่นี้ผมจะยกตัวอย่างจริงของผม โปรแกรมอาจจะไม่ฉลาดมากนักเพราะผมเป็น PHP มือใหม่นะครับ
เนื้อหา |
Project description
โจทย์มีอยู่ว่าทางบริษัทที่ผมทำงานมีสหกรณ์ออมทรัพย์ที่ให้พนักงานฝากเงิน และให้พนักงานกู้ไปใช้ได้ ซึ่งสหกรณ์จะต้องส่งรายงานประจำเดือนให้สมาชิก เพื่อให้สมาชิกรับรู้การเคลื่อนไหวของการเงินระหว่างเดือนและยอดคงเหลือในเดือนที่ผ่านมา หรือไม่ก็ต้องมีสมุดบัญชีเหมือนธนาคารให้พนักงาน และมีเครื่องปรับยอด ซึ่งทั้งสองวิธี มีราคา และค่าใช้จ่าย
ทางทีมงานจึงคิดจะใช้เว็บ Joomla รายงานยอดให้พนักงานแทน โดยพนักงานที่มา Log in จะได้เห็นยอดเงินคงเหลือของเดือนที่ผ่านมาของสมาชิกคนนั้นๆเท่านั้นดังรูป
โดยทุกสิ้นเดือนพนักงานสหกรณ์จะ Export รายงานจากระบบบัญชีสหกรณ์ใส่ Excel file และ Save ใหม่เป็น CSV และทำการ Upload ขึ้น Web Server
Programming
- Download Jumi แล้ว Install ใน Joomla
- Enable Module และ Plug in ที่ติดตั้ง
- เปิด Administrator เลือก Menu Extensions>Module Manager และเปิด Jumi Module
- กำหนดค่าต่างๆดังรูป Copy Code ด้านล่างใส่ในช่อง Code written ดังรูป
- กำหนดว่าจะวาง Module ที่หน้าไหน และ Location ไหน
- จากนั้นทดลองดูรายงาน
Code ที่ต้อง Copy ไปวางใน Jumi
<?php
defined('_JEXEC') OR die("Restricted access");
$user =& JFactory::getUser();
if ($user->guest) {
echo "<h3>หากคุณต้องการดูรายงานโปรด login ก่อนนะครับ </h3>";
} else {
$id = strtoupper($user->username);
$fd = fopen ("http://btc-intranet.ap.bayer.cnb/coop/COOPBAL.csv", "r");
$found=0;
while (!feof ($fd)) {
$buffer = fgetcsv($fd, 4096);
if(strtoupper($buffer[1]) == $id){
$found = 1;
break;
}
}
fclose ($fd);
if($found){
echo "<h3> รายงานสหกรณ์ของคุณ ".$buffer[4]." ประจำเดือน ".$buffer[5]. "</h3><br/>";
echo "<h4>รายงานเงินฝาก สมาชิกหมายเลข ".$buffer[3]."</h4>";
echo "<table>";
echo "<tr><td>ทุนสะสมยกมา :</td><td align=\"right\">".$buffer[6]."</td><td> บาท </td></tr>";
echo "<tr><td>ทุนเพิ่มเดือนนี้ :</td><td align=\"right\">".$buffer[7]."</td><td> บาท </td></tr>";
echo "<tr><td>ทุนสะสมยกไป :</td><td align=\"right\">".$buffer[8]."</td><td> บาท </td></tr>";
echo "</table>";
if(!($buffer[9]=="") || !($buffer[13])){
echo "<h4>รายงานเงินกู้</h4>";
echo "<table>";
echo "<tr><td>เงินกู้ยกมา :</td><td align=\"right\"> ".$buffer[9]."</td><td> บาท </td></tr>";
echo "<tr><td>ยอดชำระเดือนนี้ :</td><td align=\"right\"> ".$buffer[10]."</td><td> บาท </td></tr>";
echo "<tr><td>ชำระเงินต้น :</td><td align=\"right\"> ".$buffer[11]."</td><td> บาท </td></tr>";
echo "<tr><td>ชำระดอกเบี้ย :</td><td align=\"right\"> ".$buffer[12]."</td><td> บาท </td></tr>";
echo "<tr><td>เงินกู้คงเหลือ :</td><td align=\"right\"> ".$buffer[13]."</td><td> บาท </td></tr>";
echo "</table>";
}
echo "<br/>หากมีข้อผิดพลาดโปรดติดต่อเจ้าหน้าที่โดยด่วนนะครับ <br/>";
}else{
echo "<h3>ไม่มีรายงาน สำหรับคุณครับ หากคุณเป็นสมาชิกกองทุนโปรดติดต่อเจ้าหน้าที่ </h3>";
}
}
?>
อธิบาย Code โปรแกรมนี้จะเช็คก่อนว่ามีการ Log in เข้าระบบหรือเปล่า หากไม่มีการ Log in ก็จะแสดงข้อความว่า "หากคุณต้องการดูรายงานโปรด login ก่อนนะครับ"
แต่หากมีการ Login จะเปิด File COOPBAL.csv ขึ้นมาจากนั้นอ่านข้อมูลที่ละ Record เช็คว่า ชื่อผู้ที่ Log in ตรงกับ CWID ใน CSV file ของ Record ใด หากเจอว่าครงกันก็จะ Mark Flag ว่า $found = 1 จากนั้นหยุดการอ่าน เพื่อแสดงผลหน้าจอ โดยใช้ Table ช่วยจัดระเบียบ
หากอ่านทุกๆ Record จนจบ File แล้วไม่เจอ ซึ่งผู้ Log in ตรงกับ CWID ในทุกๆ Record ก็จะแสดงข้อความว่า "ไม่มีรายงาน สำหรับคุณครับ หากคุณเป็นสมาชิกกองทุนโปรดติดต่อเจ้าหน้าที่"
Excel Report
Excel File ต่อไปนี้จะต้อง Save เป็น CSV จากนั้น FTP ไปไว้ใน Server ให้สอดคล้องกับ Code ระบุไว้ว่า
$fd = fopen ("http://btc-intranet.ap.bayer.cnb/coop/COOPBAL.csv", "r")
ซึ่งสามารถแก้ Code ให้เหมาะกับ Directory Structure ของท่านได้นะครับ
ผมอาจจะเขียนอย่างรวบรัดไปหน่อยหากมีข้อสงสัย อ่าน Jumi Study Note หรือมีอะไรแนะนำก็ส่ง Mail มาคุยกันได้นะครับ Click here
นอกจาก Application ตัวนี้ผมพึ่งทำเสร็จอีกตัวชื่อว่า Future Mail เป็นการให้บริการส่ง eMail ในอนาคต



