# ABIMS — บทบาท Manager (ผู้จัดการ)

สรุปเมนูผู้จัดการ — ภาษาไทยเป็นหลัก อธิบายโฟลและเหตุผลที่ระบบแยกบทบาท — คู่กับ `docs/app/roles.html` (แท็บ Manager)

---

## หลักการ (เข้าใจง่าย)

**ผู้จัดการคืออะไร:** คนกลางระหว่างพนักงานกับกติกาที่ผู้ดูแลระบบตั้งไว้ — อนุมัติคำขอ ติดตามปฏิทิน และช่วยตามของที่ยืมไปแล้วยังไม่คืน

**โฟลโดยรวม:** พนักงานส่งคำขอ → ผู้จัดการอนุมัติหรือปฏิเสธ → เมื่อยืมแล้วต้องคืนตามวันที่ตกลง → ถ้าคืนช้า ระบบเตือนและให้ตามจากเมนูบันทึกการยืม

**ทำไมแดชบอร์ดเน้นพนักงาน:** หน้าที่หลักคือดูแลทีม ตัวเลขและกราฟจึงโฟกัสที่พนักงาน ไม่ใช่ภาพรวมทั้งบริษัทแบบ Admin

**สองเมนูที่มักสับสน:** *บันทึกการยืม* (ในเมนูผู้จัดการ) ใช้งานทุกวัน · *บันทึกกิจกรรมผู้จัดการ* (ในโซน Admin) เป็นหน้าที่ผู้ดูแลระบบใช้ตรวจภาพรวม

---

## สรุปเมนู (6 กลุ่ม)

| เมนู (UI) | ทำอะไร |
|-----------|--------|
| Dashboard | ตัวเลข กราฟ ปฏิทิน คิวอนุมัติ แจ้งเตือนคืน — เน้นข้อมูลพนักงานเป็นหลัก |
| Schedules | ปฏิทินจองห้อง (ในเอกสาร TOC อาจเรียก Calendar) |
| Borrow Equipment | คลังและสร้างคำขอยืม |
| Approvals | อนุมัติ/ปฏิเสธ/รับคืน อุปกรณ์และห้อง |
| Borrowing logs | ประวัติยืม — จุดหลักติดตาม overdue |
| Export report | Excel / PDF |

**ไม่ใช่เมนู Manager:** หน้า **Manager activity logs** ของ Admin (`admin/manager_logs`) — ผู้ดูแลระบบดูประวัติกิจกรรมที่เกี่ยวกับผู้จัดการ ต่างจาก **Borrowing logs** (`manager/logs`)

**ต่างจาก Admin บนแดชบอร์ด:** ไม่มีปุ่ม New booking — จองห้องผ่าน Schedules · ยืมผ่าน Borrow Equipment

ลิงก์ portal: `https://abims.website/manager`

### Tree — เมนู Manager

```text
Manager
├── Dashboard
├── Schedules / Calendar
├── Borrow Equipment
├── Approvals          ยืม + จองห้อง (อนุมัติ Employee)
├── Borrowing logs     ทีม + ประวัติตัวเอง (/mylogs → redirect มาที่นี่)
└── Export report
```

---

## ยืมอุปกรณ์เกินกำหนด (ค้างคืน)

หมายถึงของที่**อนุมัติให้ยืมไปแล้ว แต่ยังไม่คืน** และเลยวันที่ตกลงไว้ — **ไม่เกี่ยว**กับการใช้ห้องเลยเวลาที่จอง (ในระบบแยกเรื่องห้องกับอุปกรณ์)

### ที่ Manager ใช้ติดตาม

| จุด | สิ่งที่ทำได้ | ขอบเขตผู้ยืมที่นับ (โดยทั่วไป) |
|-----|----------------|--------------------------------|
| Dashboard | แผง return alerts, จำนวน overdue, ลิงก์ไป logs | **Employee เท่านั้น** |
| Borrowing logs | แถบ overdue, ตัวกรอง Overdue / Not overdue, `?overdue=1` | แถบนับ **Manager + Employee**; ตารางค่าเริ่มต้น role 2+3 |
| Approvals (อุปกรณ์) | กรอง overdue, แถวเน้น `is-overdue` | ตามตัวกรองคำขอ |
| การแจ้งเตือน (bell) | รายการ overdue ล่าสุด | อาจรวม **ทุก role** — ตัวเลขอาจไม่ตรง Dashboard |

ลิงก์ production: `https://abims.website/manager/logs?overdue=1`

---

## Dashboard (`/manager`)

หน้าตาเหมือนแดชบอร์ด Admin แต่ตัวเลขและกราฟเน้นพนักงานเป็นหลัก:

- **ตัวเลขสรุปสี่การ์ด:** คำขอรวม · รออนุมัติ · ห้องถูกใช้ประมาณกี่เปอร์เซ็นต์ · อุปกรณ์ที่กำลังถูกยืม — นับในขอบเขตพนักงาน
- **กราฟเส้น:** แนวโน้มจองห้อง/ยืมอุปกรณ์ — สลับทั้งหมด/ห้อง/อุปกรณ์ + ตัวกรองขั้นสูง
- **กราฟวง:** สัดส่วนสถานะ (รอ · อนุมัติ · ปฏิเสธ · คืนแล้ว · ยกเลิก) ตามประเภทในกราฟเส้น
- **ปฏิทินย่อ:** เดือนปัจจุบัน + ลิงก์ปฏิทินเต็ม
- **คิวรออนุมัติ:** อนุมัติ/ปฏิเสธจากแดชบอร์ด
- **แจ้งเตือนคืน:** ใกล้ครบ/เกินกำหนด → `manager/logs?overdue=1`
- **กราฟ:** อัปเดตจากข้อมูลจริงในระบบ (ไม่ใช่ตัวอย่างในเอกสาร ABIMS)
- **จอง/ยืม:** ไม่มีปุ่มจองด่วนบนแดชบอร์ด — ใช้เมนู Schedules และ Borrow Equipment

## Schedules / Calendar (`/manager/calendar`)

- ปฏิทินจองห้อง จอง/บล็อก ตามกฎห้องที่ Admin ตั้ง
- **ลำดับอนุมัติ:** Employee จอง → Manager อนุมัติ · Manager จอง → **Admin** อนุมัติ (อนุมัติการจองของตัวเองไม่ได้)

## Equipment catalog (`/manager/equipment_catalog`)

- ดูคลังและสร้างคำขอยืม

## Approvals (`/manager/approvals`)

- อุปกรณ์: อนุมัติ ปฏิเสธ รับคืน กรอง overdue (ไม่มีแถบ overdue แยกแบบหน้า Logs)
- ห้อง: อนุมัติคำขอจองเมื่อห้องต้องรออนุมัติ

## Borrowing logs (`/manager/logs`)

- ประวัติยืม — จุดหลักติดตาม overdue
- Modal รายละเอียดแสดงจำนวนวันเกินกำหนด
- ประวัติยืมของ Manager เองอยู่ในตารางเดียวกัน (กรองตาม role ผู้ยืมได้) — ลิงก์เก่า `/manager/mylogs` redirect มาหน้านี้

## Export (`/manager/export_excel`, `/manager/export_pdf`)

- รายงานในขอบเขต Manager

---

*อัปเดตตาม `shell_menu.php`, `dashboard/scope.php`, และ logic overdue ใน `config/functions.php`*
