ระบบ Digital Signature พิกัดแม่นยำ (Public Sector Odoo Community Series 3: Digital Transformation with E-Sign)
พลิกโฉมการอนุมัติเอกสารราชการด้วยระบบ E-Signature ที่สามารถกำหนดพิกัดลายเซ็นที่แม่นยำ พร้อมการตรวจสอบใบรับรองดิจิทัลแบบรัดกุม
Problem
ระเบียบการอนุมัติเอกสารราชการมักเน้นการเซ็นลงบนที่กระดาษจริง ทำให้สิ้นเปลืองทรัพยากรและใช้เวลาในการรอแฟ้มเสนอเซ็นเป็นเวลานาน
Solution
พัฒนาโมดูล Approval Esign บน Odoo Community โดยใช้ระบบพิกัด Ratio เพื่อวางลายเซ็นแบบ Pixel-perfect และระบบตรวจสอบความถูกต้องของใบรับรองอิเล็กทรอนิกส์ (CA)
Impact
ลดการเดินทางเพื่อส่งแฟ้มอนุมัติลง 100% และสร้างความเชื่อมั่นในการอนุมัติเอกสารดิจิทัลผ่านระบบลายเซ็นที่มีความปลอดภัยสูง
ยุคทองของ Paperless ในหน่วยงานรัฐ (Series 3)
บทความสุดท้ายของซีรีส์นี้จะพาไปพบกับหัวใจสำคัญของการทำงานในยุคดิจิทัล นั่นคือการทำให้การอนุมัติ (Approval) มีผลผูกพันทางกฎหมายและถูกต้องตามระเบียบงานสารบรรณ โดยไม่ต้องใช้กระดาษแม้แต่แผ่นเดียว ผ่านเทคโนโลยี E-Signature บน Odoo Community Edition
1. ความแม่นยำในตำแหน่งลายเซ็น (Precision Mapping)
ในแบบฟอร์มรายงานราชการ ตำแหน่งลายเซ็นต้องอยู่ตรงตามช่องที่กำหนดตายตัว เราจึงใช้ระบบพิกัดแบบ Ratio (อัตราส่วน) เพื่อแก้ปัญหาลายเซ็นเคลื่อนที่เมื่อมีการเปิดในหน้าจอที่ขนาดต่างกัน หรือเมื่อมีการจัดหน้ากระดาษใหม่
flowchart LR
A[เจ้าหน้าที่ผู้ดูแลระบบ] -- กำหนดพิกัดบน UI --> B(Ratio Mapping)
B -- x_ratio / y_ratio --> C{ฐานข้อมูล Odoo}
C -- ดึงพิกัดไปวางลายเซ็น --> D[PDF Report Output]
subgraph Coordinate System
B1[ตำแหน่งจริง / กว้าง]
B2[ตำแหน่งจริง / สูง]
end
B1 --> B
B2 --> B
2. ลำดับการอนุมัติและการตรวจสอบใบรับรองดิจิทัล (CA Flow)
เพื่อความมั่นคงปลอดภัยสูงสุด ระบบสามารถกำหนดได้ว่า ขั้นตอนการอนุมัติใดที่ต้องใช้ Digital Certificate (CA) เพื่อยืนยันตัวตนระดับสูง และขั้นตอนใดที่ใช้เพียงรูปภาพลายเซ็นปกติ
แผนผังลำดับการอนุมัติ (Sequence Diagram)
มาดูเส้นทางการเดินทางของเอกสารดิจิทัล ตั้งแต่การเสนอเซ็นไปจนถึงการตรวจสอบใบรับรอง:
sequenceDiagram
participant Staff as เจ้าหน้าที่ผู้เสนอ
participant Chief as หัวหน้าหน่วยงาน
participant System as ระบบ E-Signature
participant CA as ระบบใบรับรอง (Certificate Authority)
Staff->>Chief: เสนออนุมัติโครงการผ่านระบบ
Chief->>System: ทำการลงนามอิเล็กทรอนิกส์
alt ขั้นตอนที่ต้องใช้ใบรับรองระดับสูง
System->>CA: ร้องขอการถอดรหัสและยืนยัน Certificate
CA-->>System: ผลการตรวจสอบ (Authentic Signature)
end
System->>System: บันทึกรูปภาพลายเซ็น + พิกัดความสูง/กว้าง
System->>Staff: แจ้งเตือน: โครงการได้รับการอนุมัติแล้ว
3. ตรรกะการตรวจสอบสิทธิใช้ CA (is_ca_on_request)
เราพัฒนาระบบตรวจสอบอัตโนมัติว่าในคำขออนุมัติประเภคนั้นๆ ผู้ที่รับผิดชอบอยู่ในลำดับปัจจุบันมีใบรับรอง CA ที่ยังใช้งานได้อยู่หรือไม่ เพื่อเปิดปุ่มการเซ็นแบบดิจิทัลให้ถูกคน ถูกเวลา
# ตัวอย่างโค้ดในโมดูล request_request.py
def _compute_is_ca_on_request(self):
# ค้นหาพนักงานที่มี Certificate สถานะ Active
employees_is_ca = self.env["user.ca.credential"].search([("status", "=", "active")]).employee_id
for rec in self:
# ตรวจสอบว่า Flow นี้ถูกตั้งค่าให้ต้องถามหา CA หรือไม่
approver_flow_cas = self.env["request.approver.flow.ca"].search([("category_id", "=", rec.category_id.id)])
flow_ca_set = {f.employee_id.id for f in approver_flow_cas if f.employee_id and f.is_active}
rec.is_ca_on_request = False
# วนลูปเช็คผู้อนุมัติที่มีสิทธิในปัจจุบัน
for approver in rec.approver_ids:
if approver.employee_id.id in employees_is_ca and approver.employee_id.id in flow_ca_set:
rec.is_ca_on_request = True
break
บทสรุปของซีรีส์
ผ่านทั้ง 3 บทความในซีรีส์ Public Sector Odoo Community นี้ เราได้เห็นการเปลี่ยนผ่านจากการทำงานแบบเดิม สู่การนำเทคโนโลยีมาช่วยจัดการทั้งเรื่องยานพาหนะ (Fleet), คุรุภัณฑ์ (Asset Maintenance) และการอนุมัติที่ไร้กระดาษ (E-Sign)
กุญแจสำคัญไม่ใช่แค่การใช้ซอฟต์แวร์ระดับโลกอย่าง Odoo แต่คือการปรับปรุงและพัฒนา (Customization) ให้เข้ากับบริบทและความต้องการที่แท้จริงขององค์กรครับ