ตั้งค่าระบบ (Configuration)¶
หน้านี้สำหรับ Admin ที่ต้องตั้งค่าระบบก่อนใช้งานจริง
1. กลุ่มผู้ใช้และสิทธิ์ (Groups & Permissions)¶
โมดูลกำหนดกลุ่มผู้ใช้ 2 กลุ่ม:
Asset Officer (เจ้าหน้าที่พัสดุ)¶
XML id: roots_hemms_asset_inspection.group_hemms_asset_officer
| สิทธิ์ | รายละเอียด |
|---|---|
| สร้าง inspection | ได้ |
| แก้ไข inspection | ทุก state |
| ลบ inspection | ได้ |
| เห็น inspection ของหน่วยงานอื่น | ทุกหน่วยงาน |
ใช้สำหรับ: เจ้าหน้าที่พัสดุของโรงพยาบาลที่ต้องดูแลครุภัณฑ์หลายหน่วยงาน
Inspection Committee Member (คณะกรรมการตรวจสอบ)¶
XML id: roots_hemms_asset_inspection.group_hemms_inspection_committee
| สิทธิ์ | รายละเอียด |
|---|---|
| สร้าง inspection | ไม่ได้ |
| แก้ไข inspection | เฉพาะ condition/damage/notes |
| ลบ inspection | ไม่ได้ |
| เห็น inspection ของหน่วยงานอื่น | ทุกหน่วยงาน (ใช้สำหรับ audit) |
ใช้สำหรับ: คณะกรรมการที่ลงนามรับรองการตรวจสอบ
Internal User (ผู้ใช้ทั่วไป)¶
ผู้ใช้ปกติ (base.group_user) มีสิทธิ์:
- เห็น inspection เฉพาะของหน่วยงานตัวเอง (ผ่าน department_id ของ employee profile)
- สร้าง/แก้ไขได้เฉพาะ inspection ของหน่วยงานตัวเอง
- ไม่สามารถลบได้
Department scoping
Record rule ของระบบจะ filter inspection ตาม user.employee_ids.department_id — ผู้ใช้ทั่วไปจึงไม่เห็น inspection ของหน่วยงานอื่น
วิธีเพิ่มผู้ใช้เข้ากลุ่ม¶
- ไปที่ Settings → Users & Companies → Users
- เลือกผู้ใช้
- ที่ tab Access Rights → Operations → Maintenance
- เลือก checkbox Asset Officer หรือ Inspection Committee Member
2. หน่วยงาน (Departments)¶
ครุภัณฑ์ที่จะถูกตรวจสอบมาจาก maintenance.equipment.department_id ซึ่ง คำนวณอัตโนมัติ จาก employee ที่ถือครอง:
graph LR
A[Employee profile] -->|department_id| B[Equipment]
B -->|department_id| C[Inspection wizard filter] วิธีตั้งค่า:
- Employees → Configuration → Departments — สร้างหน่วยงาน
- Employees — กำหนด department ให้พนักงานแต่ละคน
- Maintenance → Equipment — กำหนด employee ที่ถือครอง — ระบบจะเซต department ให้ครุภัณฑ์อัตโนมัติ
ครุภัณฑ์ไม่มีหน่วยงาน
ถ้า equipment ยังไม่มี employee_id → department_id จะว่าง ครุภัณฑ์เหล่านี้จะ ถูกแสดงในทุก wizard (เพราะ domain ใช้ ('department_id', 'in', [dept, False]))
3. Sequence (เลขที่เอกสาร)¶
เลขที่ inspection format: INS00001, INS00002, ...
- Prefix:
INS - Padding: 5 หลัก
- เก็บใน
data/ir_sequence_data.xmlกับnoupdate="1"— upgrade module แล้ว counter ไม่ reset
เปลี่ยน prefix หรือ padding¶
- Settings → Technical → Sequences & Identifiers → Sequences
- ค้นหา Asset Inspection
- แก้ Prefix หรือ Padding ตามต้องการ
- Save
อย่าแก้ Code
ฟิลด์ Code ต้องเป็น hemms.asset.inspection เสมอ ถ้าเปลี่ยน create() ของ inspection จะหาไม่เจอ → record ใหม่จะได้ name "New" แทนเลขที่
4. ปีงบประมาณ (Fiscal Year Window)¶
fiscal_year_be เป็น Selection field ที่แสดงปี ปัจจุบัน ± 10 ปี ใน dropdown
ปีปัจจุบันคำนวณจากกฎ:
- ถ้า เดือน ≥ 10 (ต.ค.) → ปีงบประมาณ = ค.ศ. + 543 + 1
- ถ้า เดือน < 10 → ปีงบประมาณ = ค.ศ. + 543
ตัวอย่าง:
| วันที่ปัจจุบัน (ค.ศ.) | ปีงบประมาณ พ.ศ. |
|---|---|
| 15 ก.ย. 2026 | 2569 |
| 1 ต.ค. 2026 | 2570 |
| 15 ม.ค. 2027 | 2570 |
หน้าต่าง dropdown สำหรับวันที่ 17 พ.ค. 2026: 2559, 2560, …, 2579
ขยาย window¶
ถ้าต้องการให้รองรับปีย้อนหลังหรืออนาคตมากกว่านี้ แก้ที่ models/hemms_asset_inspection.py:
def _fiscal_year_selection():
current = _current_fiscal_year_be()
return [(str(y), str(y)) for y in range(current - 10, current + 11)]
# ^^ ^^
# ขยายช่วงตรงนี้เป็น 20, 30 ฯลฯ
แล้ว upgrade module:
docker exec -u odoo hemms_odoo_private \
odoo -d hemms_demo --stop-after-init -u roots_hemms_asset_inspection
5. Sql Constraint: หนึ่งหน่วยงาน-หนึ่งปี-หนึ่ง Inspection¶
ระบบมี database constraint:
→ หน่วยงานเดียวกัน ปีงบประมาณเดียวกัน สร้างได้แค่ 1 inspection เท่านั้น
ถ้าฝ่าฝืน:
ถ้าจำเป็นต้องสร้าง 2 รอบ (เช่น แก้รอบแรกผิด) → ลบรอบแรกก่อน (Asset Officer มีสิทธิ์ลบ)
6. Multi-company¶
โมดูลปัจจุบัน ยังไม่รองรับ multi-company อย่างเต็มที่:
- Sequence:
company_id = False→ ใช้ counter เดียวทั้งระบบ - Inspection model: ไม่มี
company_idfield
ถ้าต้องการ multi-company:
- เพิ่ม
company_idลงhemms.asset.inspection(Many2one + default current company) - เพิ่ม record rule กรอง company
- แก้ sequence ให้ per-company
ดู Developer Guide สำหรับวิธี customize
7. Backup ก่อน Upgrade¶
ก่อน upgrade module ใน production ควร:
# Backup DB
docker exec hemms_db_private pg_dump -U odoo_private hemms_demo \
> hemms_demo_backup_$(date +%Y%m%d).sql
# Backup attachments
docker run --rm -v hemms_odoo_private_data:/data \
-v $(pwd):/backup alpine \
tar czf /backup/filestore_$(date +%Y%m%d).tar.gz /data
หน้าที่เกี่ยวข้อง¶
- Workflow — เจาะลึก state machine
- Reporting — search/filter/PDF
- Backup & Restore — ขั้นตอน backup ระบบทั้งหมด
- Users & Permissions — จัดการสิทธิ์ทั่วระบบ