Skip to content

ตั้งค่าระบบ (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 ของหน่วยงานอื่น

วิธีเพิ่มผู้ใช้เข้ากลุ่ม

  1. ไปที่ Settings → Users & Companies → Users
  2. เลือกผู้ใช้
  3. ที่ tab Access RightsOperationsMaintenance
  4. เลือก 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]

วิธีตั้งค่า:

  1. Employees → Configuration → Departments — สร้างหน่วยงาน
  2. Employees — กำหนด department ให้พนักงานแต่ละคน
  3. Maintenance → Equipment — กำหนด employee ที่ถือครอง — ระบบจะเซต department ให้ครุภัณฑ์อัตโนมัติ

ครุภัณฑ์ไม่มีหน่วยงาน

ถ้า equipment ยังไม่มี employee_iddepartment_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

  1. Settings → Technical → Sequences & Identifiers → Sequences
  2. ค้นหา Asset Inspection
  3. แก้ Prefix หรือ Padding ตามต้องการ
  4. 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:

unique(department_id, fiscal_year_be)

→ หน่วยงานเดียวกัน ปีงบประมาณเดียวกัน สร้างได้แค่ 1 inspection เท่านั้น

ถ้าฝ่าฝืน:

psycopg2.IntegrityError:
  An inspection already exists for this department and fiscal year.

ถ้าจำเป็นต้องสร้าง 2 รอบ (เช่น แก้รอบแรกผิด) → ลบรอบแรกก่อน (Asset Officer มีสิทธิ์ลบ)

6. Multi-company

โมดูลปัจจุบัน ยังไม่รองรับ multi-company อย่างเต็มที่:

  • Sequence: company_id = False → ใช้ counter เดียวทั้งระบบ
  • Inspection model: ไม่มี company_id field

ถ้าต้องการ multi-company:

  1. เพิ่ม company_id ลง hemms.asset.inspection (Many2one + default current company)
  2. เพิ่ม record rule กรอง company
  3. แก้ 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

หน้าที่เกี่ยวข้อง