🎫 การจัดการจอง
ระบบจองตั๋วฝั่งหลังบ้าน — จองให้ลูกค้า ดูการจอง ยืนยันชำระเงิน ยกเลิก พิมพ์ตั๋ว
ในหน้านี้
หน้าแดชบอร์ด
เป็นหน้าแรกหลัง login — แสดงสถิติของวันนี้และสิ่งที่ต้องจัดการ:
| การ์ด | ความหมาย |
|---|---|
| 🔵 เที่ยวรถวันนี้ | จำนวนเที่ยวที่ออกในวันนี้ |
| 🟢 การจองวันนี้ | จำนวนการจองที่สร้างในวันนี้ |
| 🟡 ยอดขายวันนี้ | รายได้รวม (เฉพาะที่ payment_status = paid) |
| 🔴 รอชำระเงิน | จำนวนการจองที่ยังไม่ชำระ (ทุกช่วงเวลา) |
ด้านล่างแบ่งเป็น 2 ส่วน:
- การจองล่าสุด — 8 รายการจองล่าสุด คลิกชื่อรหัสจองดูรายละเอียด
- เที่ยวรถที่กำลังจะมาถึง — 8 เที่ยวถัดไป มี progress bar แสดง % ที่นั่งที่จองแล้ว (เขียว < 80%, แดง ≥ 80%)
หน้ารายการการจอง
เมนู: การจอง
ฟังก์ชั่นในหน้า
- ค้นหา — กรอกรหัสจอง / ชื่อลูกค้า / เบอร์โทร
- กรองสถานะ — รอชำระ / ชำระแล้ว / ยกเลิก / คืนเงิน
- ตารางแสดง 200 รายการล่าสุด
- ปุ่ม + จองตั๋วใหม่ — เปิดหน้าจองตั๋วฝั่ง admin
คอลัมน์ในตาราง
| คอลัมน์ | ข้อมูล |
|---|---|
| รหัสจอง | BK + YYYYMMDD + 5 chars (เช่น BK20260518A1B2C) — คลิกเข้าดูรายละเอียด |
| ลูกค้า | ชื่อ + เบอร์โทร |
| เที่ยว | รหัสเที่ยวรถ |
| เส้นทาง | ต้นทาง → ปลายทาง (ช่วงที่ลูกค้านั่ง) |
| วันเดินทาง | วันที่ + เวลาออก |
| ที่นั่ง | จำนวนที่นั่งที่จอง |
| ยอด | ราคารวม |
| สถานะ | badge: รอชำระ / ชำระแล้ว / ยกเลิก / คืนเงิน |
| จัดการ | ดูรายละเอียด / พิมพ์ตั๋ว |
รายละเอียดการจอง
คลิกรหัสจองจากตาราง → เข้าหน้า booking_view.php
ฝั่งซ้าย: ข้อมูลการเดินทาง
- รหัสเที่ยว เส้นทาง
- จุดขึ้น/ลง วันเวลา
- ระยะทาง
- รถ + พนักงานขับ
- ที่นั่ง (badge สีน้ำเงิน)
- ตารางผู้โดยสาร — ชื่อต่อที่นั่ง + ราคา
ฝั่งขวา: ลูกค้า + ชำระเงิน + สัมภาระ
ยืนยันการรับชำระเงิน
เฉพาะรายการที่ รอชำระ — มีฟอร์มด้านขวา:
- เลือกช่องทาง: QR Code / เงินสด / โอนธนาคาร
- ใส่เลขอ้างอิง (ถ้ามี)
- กด "ยืนยันชำระเงิน" → สถานะเป็น paid
ยกเลิกการจอง
กดปุ่มแดง "ยกเลิกการจอง" → confirm
- เปลี่ยนสถานะเป็น cancelled
- คืนที่นั่งให้เที่ยวรถอัตโนมัติ (available_seats + N)
- ลบ booking_seats records
ลงทะเบียนสัมภาระ
กด "ลงทะเบียนสัมภาระ" → ไป luggage.php?booking_id=...
- กรอกชื่อเจ้าของ น้ำหนัก คำอธิบาย
- บันทึก → สร้าง LG code + พิมพ์ใบปะติด
พิมพ์เอกสาร
ปุ่มมุมขวาบน:
- 🎫 พิมพ์ตั๋ว — เปิด
ticket.php - 🛍️ ใบปะติด — เปิด
luggage_tag.php
จองตั๋วใหม่ (Admin Booking)
เมนู: การจอง → + จองตั๋วใหม่ หรือคลิก "+ จองตั๋วใหม่" บนหน้ารายการจอง
หน้าจะแบ่งเป็น 4 step มี step indicator ด้านบน — แต่ละ step แสดงต่อกันในหน้าเดียว
Step 1: ค้นหา
- เลือก ต้นทาง + ปลายทาง (Tom Select มีค้นหาในตัว)
- เลือก วันที่ (Thai datepicker พ.ศ.)
- เลือก จำนวนที่นั่ง 1-10
- กดปุ่ม 🔍
Step 2: เปรียบเทียบเที่ยวรถ
ตารางแสดงทุกเที่ยวที่ผ่านเส้นทางนี้ พร้อมข้อมูลครบ:
| คอลัมน์ | อธิบาย |
|---|---|
| เที่ยว | รหัสเที่ยว + รหัสเส้นทาง + ผ่าน (ถ้าปลายทางอยู่กลางทาง) |
| เส้นทาง/รถ | ชื่อเส้นทาง · ทะเบียน · ประเภทรถ · พนักงานขับ |
| ขึ้น | เวลารถจะมาถึงสถานีต้นทาง (departure_time + arrival_offset) |
| ใช้เวลา | ระยะเวลาเดินทาง + จำนวนจุดจอดระหว่างทาง |
| ลง | เวลารถจะถึงสถานีปลายทางของลูกค้า |
| ระยะ | กิโลเมตรที่ลูกค้านั่งจริง |
| ที่ว่าง | badge เขียวถ้าพอ / แดงถ้าเต็ม |
| ราคา | คำนวณตามระยะ × ราคา/กม. + ขั้นต่ำ |
| จัดการ | ปุ่ม "เลือก" |
Badge "ผ่าน" คืออะไร?
เมื่อเที่ยวรถนั้นไม่ใช่รถ direct (ต้นทาง→ปลายทาง = ของลูกค้าเปะ) แต่ผ่านสาขาของลูกค้า ระบบจะติด badge "ผ่าน" สีฟ้าให้พนักงานเห็นว่า "รถสายนี้ผ่านจุดที่ลูกค้าจะลงระหว่างทาง"
เมื่อเที่ยวรถนั้นไม่ใช่รถ direct (ต้นทาง→ปลายทาง = ของลูกค้าเปะ) แต่ผ่านสาขาของลูกค้า ระบบจะติด badge "ผ่าน" สีฟ้าให้พนักงานเห็นว่า "รถสายนี้ผ่านจุดที่ลูกค้าจะลงระหว่างทาง"
Step 3: เลือกที่นั่ง
- ผังที่นั่ง 2 ฝั่ง: สีน้ำเงิน = เลือก / แดง = ถูกจอง / ขาว = ว่าง
- คลิกเลือก/ยกเลิกที่นั่งได้
- ขวามือมีสรุปแบบ live update
- กด "ต่อไป: ข้อมูลผู้โดยสาร"
Step 4: ข้อมูลผู้โดยสาร + ชำระ
- ฝั่งซ้าย: ชื่อลูกค้า เบอร์ อีเมล + ชื่อผู้โดยสารแยกแต่ละที่นั่ง + หมายเหตุ
- ฝั่งขวา: สรุปการจอง + เลือกวิธีชำระ:
| วิธีชำระ | ผลลัพธ์ในระบบ |
|---|---|
| เงินสด | payment_status = paid, booking_status = confirmed |
| QR Code PromptPay | paid + confirmed (ถือว่าเก็บที่เคาน์เตอร์แล้ว) |
| โอนธนาคาร | paid + confirmed + payment_ref |
| รอชำระภายหลัง | payment_status = pending, booking_status = reserved |
กด "ยืนยันการจอง" → save + redirect ไป booking_view.php เพื่อพิมพ์ตั๋วต่อ
จัดการเที่ยวรถ
เมนู: เที่ยวรถ
ดูรายการ + กรองวันที่
- เลือกวันที่ → ดูเฉพาะเที่ยวของวันนั้น
- แสดงรหัสเที่ยว เส้นทาง รถ วัน-เวลาออก ที่นั่ง (ที่จองแล้ว/รวม) สถานะ
สถานะเที่ยวรถ
| สถานะ | ความหมาย |
|---|---|
| scheduled | กำหนดการ — ยังไม่ออก |
| boarding | กำลังขึ้นรถ |
| departed | รถออกแล้ว |
| arrived | ถึงปลายทาง |
| cancelled | ยกเลิก |
เพิ่ม/แก้เที่ยวรถ
- กด "+ เพิ่มเที่ยว"
- เลือก เส้นทาง (ที่สร้างไว้แล้ว)
- เลือก รถโดยสาร (เฉพาะที่ active)
- กรอก วันที่ออก เวลาออก เวลาถึง (ถ้ามี)
- กรอกชื่อ + เบอร์พนักงานขับ
- เลือกสถานะ (ปกติ scheduled)
- บันทึก — ระบบจะตั้ง
available_seats = total_seatsของรถ
เตือน: เปิดเที่ยวให้ลูกค้าจองได้ทันทีหลังบันทึก — ไม่ต้อง publish เพิ่ม
ผังที่นั่งของเที่ยว
คลิก 🔍 ไอคอน grid (สีฟ้า) บนแถวของเที่ยวรถในหน้า trips.php → เข้าหน้า trip_seats.php
- ฝั่งซ้าย: ผังที่นั่ง — ที่นั่งสีแดงคือถูกจอง (hover เห็นชื่อลูกค้า) / ขาวคือว่าง
- ฝั่งขวา: ตารางรายชื่อผู้โดยสารทั้งหมด พร้อมรหัสจอง + สถานะการชำระ
ใช้สำหรับ:
- ตรวจสอบที่ว่างก่อนรับลูกค้า walk-in
- ดูใครจองที่นั่งไหนบ้างก่อนรถออก
- พิมพ์รายชื่อผู้โดยสารให้คนขับ (พิมพ์หน้าเว็บ)
