จัดการร้านรถเช่าให้รัน 24/7
ตั้งแต่สมัครครั้งแรกจนถึงปิดงบประจำเดือน — ทำตามขั้นตอนได้ทันที หรือจะแยกอ่านทีละหัวข้อก็ได้
อ่านประมาณ 12 นาที
ดูแลร้านจากมือถือได้เต็มฟังก์ชัน
ทุกหน้า admin ใช้งานบนมือถือได้ — ออกแบบ mobile-first ตั้งแต่การ์ด KPI ไปจนถึงปฏิทิน Gantt · เปิด LINE → แตะลิงก์ admin → ทำงานต่อได้เลย ไม่ต้องเปิดคอม
ตั้งค่าครั้งแรก
ใช้เวลาประมาณ 5 นาทีตั้งแต่สมัครจนเปิดรับจอง — Chaorod พาทำ Onboarding ทีละขั้นแบบมีไกด์
1. สมัครสมาชิก
ไปที่ /signup กรอกชื่อกิจการ ระบบจะสร้าง slug อัตโนมัติ เช่น “สมชายรถเช่า” → somchairent จากนั้นใส่อีเมล + รหัสผ่าน ติ๊กยอมรับข้อตกลง แล้วกดสมัคร
เลือก slug ให้ดี
somchairent.chaorod.online เปลี่ยนทีหลังลำบาก — ถ้าจะ rebrand แนะนำใช้ custom domain แทน2. Onboarding 5 ขั้น
หลังสมัคร ระบบจะพาไป /onboarding ทันที — ใช้เวลา ประมาณ 5 นาที
ข้อมูลร้าน
ที่อยู่ · เบอร์โทร · เวลาทำการ — ข้อมูลนี้จะโชว์ที่หน้าร้านลูกค้าข้อมูลธนาคาร
บัญชีรับโอนมัดจำจากลูกค้า — Chaorod จะสร้าง QR PromptPay จากเลขนี้ในหน้า checkout อัตโนมัติเพิ่มรถคันแรก
กรอกรุ่น · ทะเบียน · ราคา/วัน · อัปโหลดรูป (เก็บที่ Cloudflare R2)เชื่อม LINE Official Account
ใส่ Channel Secret + Access Token — ข้ามได้ ทำทีหลังที่ /admin/settingsพร้อมเปิดร้าน
กดเปิด → หน้าร้านของคุณพร้อมรับลูกค้าทันทีที่<slug>.chaorod.online
แดชบอร์ด
หน้าแรกของ admin (/admin) แสดงภาพรวมประจำวัน
- KPI การ์ด — รายได้ · จำนวน booking · utilization · ลูกค้าใหม่
- กราฟแนวโน้ม (sparkline) — 7/30/90 วันที่ผ่านมา + DeltaBadge เปรียบเทียบกับช่วงก่อนหน้า
- การจองล่าสุด — เห็นสถานะ pending/confirmed ครบในที่เดียว
- รถที่กำลังเช่าอยู่ — เห็นวันคืนรถใกล้สุด

จัดการรถ
ดูที่ /admin/cars — เพิ่ม · แก้ไข · ปิดสถานะรถ
เพิ่มรถใหม่
- กดปุ่ม + เพิ่มรถ มุมขวาบน
- ใส่รุ่น · ยี่ห้อ · ปี · ทะเบียน · ประเภท (eco/sedan/SUV/van/pickup)
- เลือกเกียร์ (auto/manual) · จำนวนที่นั่ง
- กำหนดราคาเช่าต่อวัน (base rate — ปรับยืดหยุ่นต่อใน Pricing)
- อัปโหลดรูป (หลายรูปได้ — เก็บที่ R2 cloud)
- เลือกเจ้าของรถ (ดู Owners) — เว้นว่าง = รถของร้านเอง
- กด บันทึก
เปลี่ยนสถานะรถ
เข้าหน้ารายละเอียดรถที่ /admin/cars/{id} → เปลี่ยนสถานะเป็น กำลังซ่อม หรือ ไม่พร้อมเช่า เพื่อปิดรับจองชั่วคราว

การจอง · ตั้งแต่จองจนคืนรถ
หัวใจหลักของระบบ — ตั้งแต่ตรวจสลิปจนคืนเงินประกัน จบครบในที่เดียวที่ /admin/bookings
มัดจำ ≠ เงินประกัน — แยกให้ชัด
- มัดจำ — เงินที่ลูกค้าโอนตอนจอง (PromptPay) เพื่อล็อกคิว · หักเข้าค่าเช่า · คืนให้เมื่อยกเลิกหรือปฏิเสธสลิป
- เงินประกัน — เงินค้ำที่ลูกค้าวางตอนรับรถ (มักเป็นเงินสด) · คืนเต็มเมื่อคืนรถไม่มีปัญหา หรือหักค่าเสียหายก่อนคืน
ภาพรวมทั้งวงจร
การจองทุกใบจะวิ่งตามขั้นตอนนี้ — ตั้งแต่ลูกค้าจ่ายมัดจำ จนคืนเงินประกันเสร็จ:
pending_payment→ ลูกค้ายังไม่อัปโหลดสลิปpending_admin_approval→ อัปโหลดแล้ว รอเราตรวจconfirmed→ อนุมัติ รอวันรับรถactive→ รับรถแล้ว กำลังเช่าreturned→ คืนรถแล้ว — มี sub-statedeposit_hold_status:none· ไม่มีเงินประกัน จบเลยheld· เงินประกันส่วนหนึ่งยัง hold อยู่ รอครบกำหนดreleased· คืนเงินประกันครบแล้วforfeited· ยึดเงินประกันทั้งก้อน (ลูกค้าทำผิดสัญญา)
cancelled/expired→ ยกเลิก
หน้ารายการ Booking
/admin/bookings — แสดงทุก booking ของร้าน + KPI 4 ตัว · status chips · ค้นหา · Export CSV
- คลิกแถว → preview drawer เปิดด้านขวา (ข้อมูลสรุปเร็ว ๆ + ปุ่ม “ดูเต็มหน้า”)
- คลิก “ดูเต็มหน้า” → ไปหน้า /admin/bookings/[id] — มีปุ่ม action ครบ
- URL จำ filter ไว้ —
?status=active&q=ชื่อshare ลิงก์ให้ทีมได้

1. อนุมัติสลิป (Review Queue)
เมื่อสถานะ pending_admin_approval — ใช้หน้า /admin/bookings/review-queue ที่ออกแบบมาเพื่อ เคลียร์สลิปทีละใบเร็ว ๆ (keyboard-friendly)
- เปิด review-queue → ใบที่รอตรวจขึ้นทีละใบ
- ดูสลิปที่ลูกค้าอัปโหลด · ตรวจยอด + เวลา + เลขบัญชี
- กด
✅ อนุมัติ→ สถานะเป็นconfirmed+ ส่ง LINE/Email แจ้งลูกค้าอัตโนมัติ + ใบถัดไปขึ้นมา - กด
❌ ปฏิเสธ→ ใส่เหตุผล → ลูกค้าได้ notification ทันที พร้อม CTA ให้อัปโหลดสลิปใหม่

2. รับรถ (Pickup)
เมื่อสถานะ confirmed และลูกค้ามาถึง — เปิดหน้า booking detail → sidebar ขวา จะมี section “บันทึกรับรถ”:
- กรอกเลขไมล์ตอนรับรถ (optional แต่แนะนำ — ใช้คำนวณค่าน้ำมัน/ระยะตอนคืน)
- กดปุ่ม
✓ บันทึกรับรถ→ สถานะเปลี่ยนเป็นactive+ เริ่มสัญญาเช่า

3. คืนรถ + คืนเงินประกัน
เมื่อสถานะ active ลูกค้าเอารถมาคืน — เปิด booking detail → sidebar ขวา จะเปลี่ยนเป็น section “คืนรถ + คืนเงินประกัน”
| ช่อง | ใช้ทำอะไร |
|---|---|
| เลขไมล์ตอนคืน | ใช้คำนวณค่าน้ำมัน/ส่วนต่างระยะทาง |
| หมายเหตุความเสียหาย | ถ้ามีรอย/ขีดข่วน เขียนไว้ใน record |
| คืนทันที (฿) | จำนวนที่โอนกลับให้ลูกค้าเลย — Default = เงินประกันเต็ม |
| Hold ส่วนที่เหลือ (วัน) | ถ้าอยากกันไว้ก่อนเช็คสภาพรถ/รอใบสั่ง — 0/3/5/7/14 วัน |
| วิธีคืนเงินทันที | โอนธนาคาร / PromptPay / เงินสด — เลือกตามที่ลูกค้าสะดวก |
| อ้างอิง (TXN / ใบเสร็จ) | เลขรายการธนาคาร ถ้ามี |
บัญชีรับคืนเงินประกัน (ส่วนกลางหน้า) — ถ้าวิธีคืน = โอนธนาคาร ต้องกรอกบัญชีลูกค้าก่อน Save ถึงจะกดปุ่มยืนยันได้
กด ✓ บันทึกคืนรถ + คืนเงิน X ฿ →
- สถานะเป็น
returned - ถ้า Hold = 0 วัน →
deposit_hold_status = released— จบเลย - ถ้า Hold > 0 วัน →
deposit_hold_status = held— เข้า timeline รอครบกำหนด (ดูข้อ 4) - ส่ง LINE/Email แจ้งลูกค้า + แนบ “ใบรับรองคืนเงินประกัน” PDF

4. Hold เงินประกัน + Release (Deposit hold)
หลังคืนรถ ถ้าเลือก Hold ส่วนที่เหลือ — booking จะเข้า state returned + deposit_hold_status = held — sidebar ขวาจะแสดง Timeline เงินประกัน:
- วันคืนรถ → จำนวนที่คืนทันที
- นับวันถอยหลังจนครบ hold period
- ถ้าครบกำหนดและไม่มีปัญหา → กด
คืนส่วนที่เหลือ→ status →released - ถ้าเจอความเสียหาย → กด
หักจากเงินประกัน→ ใส่จำนวน + เหตุผล → ส่วนที่เหลือคืนลูกค้า (หรือยึดทั้งหมด =forfeited)
ระบบเตือนเมื่อครบกำหนด
notify_overdue_deposits ทำงานทุกวัน 09:05 — เมื่อ booking ครบกำหนด ระบบจะส่ง LINE + email เตือนเจ้าของร้าน ระบบไม่ได้คืนเงินอัตโนมัติ — เจ้าของร้านต้องโอนเงินคืนลูกค้าเอง แล้วกด คืนส่วนที่เหลือ ในระบบเพื่อบันทึก
5. สรุปเงินประกัน (หลัง Release)
เมื่อ deposit_hold_status เป็น released หรือ forfeited — sidebar จะเปลี่ยนเป็นการ์ด สรุปเงินประกัน แสดง:
- เงินประกันเข้า (รับจากลูกค้าตอนรับรถ)
- หัก (กี่รายการ + รวมเท่าไหร่)
- คืนหลัง hold (ก้อนที่ปล่อยตอน release)
- คืนรวม (ยอดสุทธิที่ลูกค้าได้กลับ)
- ปุ่ม
ใบรับรองคืนเงินประกัน (PDF)สำหรับ download

6. คืนเงินกรณีพิเศษ (Generic Refund)
Section “คืนเงินอื่น ๆ” สำหรับกรณีที่ ไม่ใช่ deposit flow — เช่น:
- ยกเลิกก่อนรับรถ → คืน lock fee
- Goodwill — ค่าน้ำมันส่วนเกินที่ลูกค้าจ่ายเผื่อ
- ปรับยอดเล็ก ๆ หลัง booking ปิดไปแล้ว
กรอกจำนวน + เหตุผล → ปุ่ม 💸 คืนเงิน → ระบบบันทึก ledger + ส่ง notification
deposit_hold_status = held — เพราะระหว่าง hold ควรใช้ “Timeline เงินประกัน” เพื่อให้ trail audit เคลียร์7. ขยายเวลา (Extend)
ระหว่าง confirmed หรือ active — sidebar มี section ขยายเวลา ให้เลือกวันคืนใหม่ → ระบบ:
- เช็คว่ารถว่างช่วงเวลาขยายไหม (ถ้าชนกับ booking อื่น = error)
- คำนวณค่าเช่าเพิ่มอัตโนมัติตาม pricing rule
- อัปเดต
end_at+ บันทึก event ใน ledger
8. ยกเลิก Booking
Section “โซนอันตราย” — ใช้สำหรับสถานะ confirmed/active ที่ต้องยกเลิกกลางคัน
- กดปุ่มยกเลิก → modal ขอเหตุผล (required)
- ถ้ามีเงินประกันที่จ่ายแล้ว → ระบบเสนอ refund ให้
- สถานะเป็น
cancelled+ ลูกค้าได้ notification
Walk-in (สร้าง booking เอง)
ลูกค้าเดินเข้าร้านไม่ผ่านระบบจอง → ไปที่ /admin/bookings/new ใส่ข้อมูลลูกค้า + เลือกรถ + วันที่ → ระบบสร้างให้ทันทีเป็นสถานะ confirmed (ข้ามขั้นตอนตรวจสลิป)
ปฏิทินรถ
/admin/calendar — แสดงเป็น Gantt chart (แกน X วันที่ · แกน Y คันรถ)
- เห็นว่ารถคันไหนว่าง/ไม่ว่างช่วงไหน
- คลิก booking bar → preview drawer เปิด
- ใช้ตอบลูกค้าโทรถาม “รถคันนี้ว่างวันที่ X ไหม”

ราคา + โปรโมชั่น
ตั้งราคาแบบยืดหยุ่น 3 ระดับ ที่ /admin/pricing
| ระดับ | ตัวอย่างใช้งาน |
|---|---|
| Global | ทุกเสาร์-อาทิตย์ +20% |
| Per car type | SUV ราคาวันธรรมดา 1,800 บาท |
| Per car | Honda City ทะเบียน xx ลด 10% ในเดือนนี้ |
สร้าง Pricing rule
- เลือกระดับ → เลือกรถ/ประเภท (ถ้าไม่ใช่ global)
- กำหนดเงื่อนไข — date range · weekday · ระยะเวลาเช่า (1-3d/4-7d/8+d)
- กำหนดการคิดราคา:
overrideราคาฐาน หรือmultiplier% - บันทึก

โปรโมชั่นโค้ด
/admin/promotions — สร้างโค้ดส่วนลด เช่น SONGKRAN2026 กำหนดมูลค่า (%/บาท) · ขั้นต่ำการเช่า · จำนวนครั้งที่ใช้ได้ · วันหมดอายุ
ลูกค้า + KYC
จัดการโปรไฟล์ลูกค้า และตรวจเอกสาร KYC ให้ครบก่อนปล่อยรถ
รายชื่อลูกค้า
/admin/customers มี 3 tab — ทั้งหมด · VIP · Blacklist
Blacklist
- ค้นหาลูกค้า → กดเมนู
⋮→ เพิ่มเข้า blacklist - ใส่เหตุผล (เช่น “ไม่คืนรถ 2 ครั้ง”)
- ลูกค้าคนนี้จะจองไม่ได้อีก — ระบบบล็อกตอน checkout
ตรวจเอกสาร (Compliance)
/admin/compliance — queue เอกสารรออนุมัติ (บัตร ปชช + ใบขับขี่)
- กด ดู → เห็นรูปเอกสาร
- กด
✅ ผ่านหรือ❌ ไม่ผ่าน(พร้อมเหตุผล) - ลูกค้าได้รับ notification ทาง LINE/อีเมลทันที

เงินประกัน + บัญชี
เงินประกัน (Deposits)
/admin/deposits/held — ติดตามเงินประกันที่ลูกค้าวาง ตอนรับรถ · /admin/deposits/report สำหรับสรุปประจำเดือน
ค้างคืน— รถยังไม่คืน ยังถือเงินประกันไว้รอคืนเงิน— รถคืนเรียบร้อย ต้องโอนกลับหักจากเงินประกัน— มีค่าเสียหาย → ใส่จำนวน + เหตุผล
Flow เต็มอยู่ไหน
docs/design/deposit-flow.md
บัญชี (Accounting)
/admin/accounting — สรุป cash flow รายเดือน (รายได้ - รายจ่าย = กำไรสุทธิ)
บัญชี รับ-จ่าย
/admin/accounting — รายได้/รายจ่าย/กำไรสุทธิ (แยก เงินประกันออกจากกำไร) · ค่าเช่าลงอัตโนมัติเมื่อคืนรถ · บันทึกรายจ่าย manual เอง (ค่าซ่อม น้ำมัน ทำความสะอาด)
ใบเสนอราคา + รายงาน
ใบเสนอราคา
/admin/quotations — สร้าง PDF (WeasyPrint) สำหรับลูกค้าองค์กร พร้อมเลขผู้เสียภาษี + ที่อยู่จัดส่ง · อายุ default 7 วัน

Analytics
/admin/analytics — วิเคราะห์เชิงลึก: top performing cars · customer cohorts · conversion funnel · เลือก period 7d/30d/90d/1y
Reports
/admin/reports — รายงาน download: ยอดขายรายเดือน (.csv/.pdf) · รายงานภาษี · utilization ต่อคันรถ
เจ้าของรถ + ทีมงาน
เจ้าของรถ (Owners)
/admin/owners — กรณีรับฝากรถจากเจ้าของอื่น (revenue share)
- เพิ่มเจ้าของรถ — ชื่อ · เลข ปชช · บัญชีธนาคาร
- ผูกรถกับเจ้าของในหน้าเพิ่ม/แก้ไขรถ
- กำหนด % ส่วนแบ่ง (เช่น เจ้าของ 70% · ร้าน 30%)
- ระบบคำนวณยอดที่ต้องจ่ายให้แต่ละคนอัตโนมัติทุกเดือน

ทีมงาน (Team)
/admin/team — เชิญสมาชิกทีม
| Role | สิทธิ์ |
|---|---|
owner | เจ้าของ — ทุกสิทธิ์ |
manager | ผู้จัดการ — จัดการ booking + รถ + ดูเงิน |
staff | พนักงาน — จัดการ booking เท่านั้น |
แบรนด์ + โดเมน + LINE
ปรับแต่งหน้าร้าน
/admin/settings — เปลี่ยนชื่อร้าน · โลโก้ · สีหลัก · cover image · ข้อความต้อนรับ · เบอร์ · LINE ID · เวลาทำการ · แผนที่
เปลี่ยนสีและโลโก้มีผลทันที

Custom Domain
- /admin/domains — ใส่โดเมน เช่น
rent.somchaicars.com - ระบบแสดง CNAME ที่ต้องไปตั้งกับ registrar
- ตั้ง DNS เสร็จ → กด Verify
- ใช้งานได้ภายใน 5 นาที (SSL อัตโนมัติ)
LINE Bot
เชื่อม LINE OA ของร้านที่ /admin/settings → หัวข้อ “LINE Bot (ส่งข้อความลูกค้า)”: ใส่ Channel Secret + Access Token · วาง Webhook · เผยแพร่เมนู · LIFF — ทำตามทีละขั้นที่ /docs/line-setup
ส่วน คำตอบอัตโนมัติ (keyword → ข้อความตอบกลับ · greeting message · log ล่าสุด) ตั้งแยกที่ /admin/bot
ดูข้อความที่ระบบจะส่งให้ลูกค้าก่อนเปิดใช้จริง
เมื่อเชื่อม LINE แล้ว ระบบจะส่ง Flex Messages อัตโนมัติ 6 แบบ ตลอด lifecycle ของ booking (ยืนยันจอง · เตือนรับ-คืน · คืนเงินประกัน · ยกเลิก) — ดูตัวอย่างทุกข้อความได้ที่ /docs/notifications