คู่มือ AirClinic

คู่มือใช้งาน AirClinic

คู่มืออ้างอิงหน้าจอจริงของระบบ AirClinic ERP — ครอบคลุมทุกเมนู ทุกปุ่ม ทุกขั้นตอน แยกตามตำแหน่งงาน เพื่อให้พนักงานแต่ละคนหาสิ่งที่ต้องใช้เจอเร็วที่สุด

ปรับปรุงล่าสุด 16 ก.ย. 2569 — เพิ่ม: ใบนับสต็อก (PDF) และการนับแยกราย Lot · คอลัมน์ "ผู้ทำ" ในประวัติเคลื่อนไหว · ค่าบริการต่อการใช้สิทธิ์ + สิทธิ์ที่นับเป็นหน่วยย่อย · ลูกค้าที่ยังไม่มี HN (จากแชท/การจอง) · ค่าชั่วโมงหมอในรายงานค่ามือ · เลเยอร์ชาร์ตใบหน้าของหมอแต่ละคน · แก้ไข/ลบนัด · รายงานแนวโน้มรายเดือน

👈 วิธีใช้คู่มือนี้: เลือกตำแหน่งงานของคุณจากเมนูซ้าย (บนมือถือ แตะปุ่ม ☰ มุมบนซ้าย)

พื้นฐานร่วม — ทุกคนอ่าน

ไม่ว่าจะทำงานตำแหน่งไหน หน้าจอทุกหน้าของ AirClinic ใช้กติกาชุดนี้ร่วมกัน

เข้าสู่ระบบ

ที่อยู่ /login — กรอก Username และ Password แล้วกด Sign In (ระหว่างรอปุ่มจะขึ้น "Signing in...")

  • ถ้าผิดพลาด ระบบขึ้นกล่องข้อความสีแดงใต้หัวเรื่อง "เข้าสู่ระบบ" (ข้อความจากเซิร์ฟเวอร์ หรือ "Login failed. Please try again." ถ้าเซิร์ฟเวอร์ไม่ตอบ)
  • หลัง login สำเร็จ ระบบดึงสิทธิ์การใช้งาน (RBAC), โหมดการมองเห็นเคส (My-Cases) และรูปแบบเมนูตามตำแหน่งให้อัตโนมัติ ก่อนพาเข้าหน้าแรก
  • ไม่มีปุ่ม "ลืมรหัสผ่าน" บนหน้านี้ — ต้องแจ้งผู้ดูแลระบบให้ตั้งรหัสใหม่ให้
ตัวอย่างหน้าตา: ฟอร์มเข้าสู่ระบบ (Username / Password / Sign In)
เข้าสู่ระบบ
Usernamestaff01
Password••••••••
Sign In

ผิดพลาด = กล่องข้อความสีแดงใต้หัวเรื่อง · ระหว่างรอปุ่มขึ้น "Signing in..." · ไม่มีปุ่ม "ลืมรหัสผ่าน"

แถบด้านบน (ทุกหน้าหลัง login)

ส่วนประกอบอธิบาย
ปุ่มซ่อน/แสดงเมนูซ้ายไอคอนมุมซ้ายบน (จอ desktop/iPad แนวนอนเท่านั้น) — hover ขึ้น title "ซ่อนเมนู (เพิ่มพื้นที่ทำงาน)" ตอนเมนูเปิด / "แสดงเมนู" ตอนซ่อน ค่าที่เลือกจำไว้ในเครื่อง ไม่ต้องตั้งใหม่ทุกครั้ง
สลับสาขาdropdown ป้าย "สาขา:" — แสดงเฉพาะหน้าหลังบ้านเท่านั้น (รายงาน/AR/บัญชี/HR ฯลฯ) หน้า "งานประจำวัน" (แดชบอร์ด/การจอง/POS/EMR/ลูกค้า/สินค้า-บริการ-การตลาด/สต็อก-จัดซื้อ) จะไม่มีตัวเลือกนี้เพราะพนักงานทำงานอยู่สาขาเดียว มีตัวเลือก "ทุกสาขา" ให้เฉพาะ admin/super_admin — เปลี่ยนสาขาแล้วข้อมูลที่ค้างอยู่บนจอ (ตะกร้า/ตัวกรอง) จะถูกล้างทันทีเพื่อกันข้อมูลข้ามสาขาปน คลินิกโหมดสาขาเดียว (mono) จะไม่แสดงตัวเลือกนี้เลย
ป้ายเครือข่ายคลินิกไอคอนวงกลมจุดสี — แสดงเฉพาะเมื่อคลินิกนี้ "จับคู่" กับคลินิกอื่นในเครือข่ายแล้วเท่านั้น จุดเขียว = เชื่อมต่อปกติ, จุดเหลือง = รอยืนยัน/เชื่อมต่อไม่ได้ตอนนี้ — hover (หรือแตะบนมือถือ) ดูรายละเอียด/คลิกไปหน้าตั้งค่าเครือข่ายคลินิก
กระดิ่งแจ้งเตือนดูรายละเอียดด้านล่าง
ป้ายตำแหน่งข้อความชื่อบทบาท (ผู้ดูแลระบบ/พนักงาน/หมอ/พยาบาล/ฝ่ายบุคคล/ลูกค้า) ต่อจากกระดิ่ง
ผู้ใช้ + ออกจากระบบมุมล่างสุดของเมนูซ้าย — รูปโปรไฟล์ (หรืออักษรย่อชื่อ-นามสกุลถ้าไม่มีรูป), ชื่อ-นามสกุล, ป้ายตำแหน่ง และปุ่มไอคอนประตูออก (title "ออกจากระบบ") กดแล้วพากลับ /login
ตัวอย่างหน้าตา: เมนูซ้าย — item ที่เปิดอยู่ (แถบ gradient ม่วง→cyan) + ป้ายจำนวน
แดชบอร์ด การจอง ขายหน้าร้าน (POS)

item ที่เปิดอยู่ = แถบไล่สีม่วง #7c3aed → cyan #22d3ee ตัวอักษรขาว · item อื่น = ตัวอักษรเทา

ตัวอย่างหน้าตา: dropdown สลับสาขา (มี "ทุกสาขา") + ป้ายเครือข่ายคลินิก + ป้ายตำแหน่ง
สาขา (หลังบ้าน)ทุกสาขา
ผู้ดูแลระบบ

"สาขา:" เห็นเฉพาะหน้าหลังบ้าน · "ทุกสาขา" เฉพาะ admin · จุดเขียว = เครือข่ายเชื่อมปกติ (เหลือง=รอยืนยัน)

ตัวอย่างหน้าตา: ผู้ใช้ + ปุ่มออกจากระบบ (มุมล่างเมนูซ้าย)
สจ

สมชาย จันทร์

ผู้ดูแลระบบ

รูปโปรไฟล์ (หรืออักษรย่อ) + ชื่อ + ป้ายตำแหน่ง + ปุ่มประตูออก (title "ออกจากระบบ") → กลับ /login

ตัวอย่างหน้าตา: ปุ่มซ่อน/แสดงเมนูซ้าย (เพิ่มพื้นที่ทำงาน)
← กด hover ขึ้น title "ซ่อนเมนู (เพิ่มพื้นที่ทำงาน)" / "แสดงเมนู"

มุมซ้ายบน (desktop/iPad แนวนอน) · ค่าที่เลือกจำไว้ในเครื่อง ไม่ต้องตั้งใหม่ทุกครั้ง

เมนูซ้าย / การนำทาง

ทุกหน้าจอมีแถบเมนูซ้ายเป็นตัวนำทางหลัก จัดเป็น 5 กลุ่ม (หัวข้อสีเทาตัวเล็ก): งานประจำวัน · สินค้า/บริการ/การตลาด · สต็อก/จัดซื้อ · หลังบ้าน · ตั้งค่า/ระบบ — แต่ละบทบาทเห็นเฉพาะกลุ่ม/รายการที่มีสิทธิ์ (เมนูของแต่ละบทบาทอยู่ในแถบนี้) เมนูที่กำลังเปิดอยู่เป็นแถบไล่สี ม่วง→ฟ้า (gradient) ตัวอักษรขาว

ตัวอย่างหน้าตา: แถบเมนูซ้าย hero-erp จริง (5 กลุ่ม + ไอคอน + item ที่ active เป็น gradient)

งานประจำวัน

แดชบอร์ด การจอง ขายหน้าร้าน (POS) ประวัติการรักษา (EMR) ลูกค้า

สินค้า/บริการ/การตลาด

จัดการบริการ แพ็กเกจ ระบบสะสมแต้ม

สต็อก/จัดซื้อ

คลังสินค้า จัดซื้อ

หลังบ้าน

รายงาน รวมการอนุมัติ4 บัญชี ระบบบุคคล (HR)

ตั้งค่า/ระบบ

สิทธิ์ & ความปลอดภัย ประวัติกิจกรรม (Logs)

5 กลุ่มคั่นด้วยเส้น + หัวข้อสีเทา · ไอคอน lucide จริง · item ที่เปิดอยู่ = แถบไล่สีม่วง #7c3aed → ฟ้า #22d3ee ตัวอักษรขาว · "รวมการอนุมัติ" มี badge ส้ม · เห็นเฉพาะเมนูที่บทบาทมีสิทธิ์

กระดิ่งแจ้งเตือน

  • ตัวเลขวงกลมสีแดงมุมขวาบนกระดิ่ง = จำนวนยังไม่อ่าน (ดึงข้อมูลใหม่ทุก 60 วินาที และเมื่อกลับมาโฟกัสหน้าต่าง)
  • คลิกกระดิ่ง → เปิด dropdown แสดง 8 รายการล่าสุด คลิกรายการใดรายการหนึ่ง = ทำเครื่องหมายอ่านแล้ว + พาไปหน้าที่เกี่ยวข้องอัตโนมัติ (ถ้ารายการนั้นมีลิงก์)
  • ปุ่ม "อ่านทั้งหมด" มุมขวาบนของ dropdown (ปิดใช้งานเมื่อไม่มีรายการค้าง)
  • ปุ่ม "ดูทั้งหมด" ท้าย dropdown → พาไปหน้ารายการแจ้งเตือนแบบเต็ม — คนละหน้ากับเมนู "การแจ้งเตือนของฉัน" (ซึ่งเป็นหน้าตั้งค่าว่าจะรับแจ้งเตือนเรื่องอะไรบ้าง ไม่ใช่หน้ารายการ)
  • ไม่มีรายการเลย → ไอคอนกล่องเปล่า + ข้อความ "ยังไม่มีการแจ้งเตือน"
ตัวอย่างหน้าตา: กระดิ่งแจ้งเตือน + ตัวเลขค้าง
5 ← ตัวเลขวงกลมสีแดง = จำนวนยังไม่อ่าน
ตัวอย่างหน้าตา: dropdown แจ้งเตือน (รายการล่าสุด + อ่านทั้งหมด/ดูทั้งหมด)
การแจ้งเตือนอ่านทั้งหมด

มีคำขอเปลี่ยนเซลล์รออนุมัติ

3 นาทีที่แล้ว

สต็อก "สำลีก้าน" ต่ำกว่าจุดสั่ง

1 ชม.ที่แล้ว

ดูทั้งหมด

แสดง 8 รายการล่าสุด · รายการยังไม่อ่าน = จุดม่วง + พื้นม่วงอ่อน · คลิก = อ่านแล้ว + พาไปหน้าที่เกี่ยว

ปรับขนาดตัวอักษร

  • อยู่ที่หน้า แดชบอร์ด (หน้าแรกหลัง login) มุมขวาบนของหัวข้อ ไม่ได้อยู่ในแถบบนแบบทุกหน้า
  • ปุ่ม / + ปรับทีละ 5% (ช่วง 80–150%) หรือลากแถบเลื่อน, ปุ่ม "คืนค่าดั้งเดิม" กลับ 100%
  • มีผลกับทุกหน้าจอทันทีและจำค่าไว้ในเครื่อง (ไม่ต้องตั้งซ้ำทุกครั้งที่เข้าระบบ)
ตัวอย่างหน้าตา: ตัวปรับขนาดตัวอักษร (− / แถบเลื่อน / + · คืนค่าดั้งเดิม)
100% คืนค่าดั้งเดิม

ปรับทีละ 5% (ช่วง 80–150%) · มีผลทุกหน้าทันที + จำค่าในเครื่อง · อยู่มุมขวาบนของหน้าแดชบอร์ดเท่านั้น

ออกจากระบบ กดปุ่มไอคอนประตูออกที่มุมล่างสุดของเมนูซ้าย ข้าง ๆ ชื่อ-รูปโปรไฟล์ของตัวเอง ระบบจะพากลับไปหน้า /login ทันที
🛎️

เจ้าหน้าที่ต้อนรับ

รับลูกค้าหน้าร้าน จัดคิว เปิดเคสให้หมอ

เมนูของคุณ

แดชบอร์ด การจอง ขายหน้าร้าน (POS) ลูกค้า

งานหลัก 5 เรื่อง: (1) อ่านแดชบอร์ดตอนเริ่มกะ (2) จองนัด/จัดการนัดหมาย (3) เปิดเคสให้ลูกค้าที่ POS รวมถึงสแกนบัตรประชาชน (4) เช็คอินลูกค้าที่มาถึงคลินิกแล้วส่งต่อเข้า EMR (5) ค้นหา/เพิ่ม/ดูโปรไฟล์ลูกค้าในเมนูลูกค้า

1. แดชบอร์ด — หน้าแรกที่เจอทุกครั้งที่ล็อกอิน

หัวจอทักทายตามช่วงเวลา พร้อมปุ่ม รีเฟรช มุมขวาบนไว้โหลดตัวเลขทุกการ์ดใหม่พร้อมกัน มีการ์ดสรุปวันนี้ 4 ใบ:

การ์ด (สี)บอกอะไร
รายได้วันนี้ (เขียว)ยอดเงิน ฿ สุทธิที่เก็บได้วันนี้ + จำนวนบิล
นัดหมาย (น้ำเงิน)จำนวนนัดวันนี้ทั้งหมด + แยก "รอ N • เสร็จ N"
เคสที่ดำเนินการ (ม่วง)จำนวนเคสที่หมอ/พยาบาลกำลังดูแลอยู่ ยังไม่ปิดบิล
ลูกค้าทั้งหมด (ส้ม)จำนวนลูกค้าที่ลงทะเบียนสะสมในระบบ
ตัวอย่างหน้าตา: การ์ดสรุปวันนี้ (KPI) บนแดชบอร์ด
รายได้วันนี้
฿48,900
▲ 12 บิล
นัดหมาย
18
รอ 7 • เสร็จ 11
เคสที่ดำเนินการ
5
ยังไม่ปิดบิล

การ์ด 4 ใบ (สีเขียว/ฟ้า/ม่วง/ส้ม) — ตัวเลขสรุปวันนี้ กดปุ่มรีเฟรชมุมขวาบนโหลดใหม่พร้อมกัน

ถ้าตัวเลขรายได้ดึงมาไม่สำเร็จ จะมีแถบเหลืองอำพันเตือนว่า "ตัวเลขรายได้ที่แสดงอาจไม่ถูกต้อง..." — เห็นแถบนี้แล้วอย่าเพิ่งใช้ตัวเลขไปสรุปยอดให้หัวหน้า

กรณีตัวอย่าง

เปิดกะเช้า เจอแถบเตือนสีเหลืองใต้การ์ดรายได้

  1. เข้าระบบตอนเช้า แดชบอร์ดขึ้นแถบเหลืองอำพัน "ตัวเลขรายได้ที่แสดงอาจไม่ถูกต้อง..."
  2. กดปุ่ม รีเฟรช มุมขวาบน
  3. ถ้าแถบเตือนหายไปและตัวเลขเปลี่ยน → ใช้ตัวเลขใหม่ได้ตามปกติ
  4. ถ้ากดรีเฟรชแล้วแถบยังอยู่ → อย่ารายงานยอดรายได้จากหน้านี้ต่อผู้จัดการ ให้แจ้งแอดมิน/ไอทีแทน

ส่วนแจ้งเตือน โผล่เฉพาะตอนมีเรื่องจริงต้องระวัง คลิกที่การ์ดพาไปหน้าที่เกี่ยวข้องทันที: หมดสต็อก (แดง)/สต็อกต่ำ (เหลือง)/ใกล้หมดอายุ (ส้ม) → ไปหน้าคลังสินค้า, วงเงินใกล้หมดอายุ (ม่วง) → ไปรายงานวงเงิน (เห็นเฉพาะแอดมิน/เซลที่มีสิทธิ์ดูรายงานวงเงิน)

กรณีตัวอย่าง

ลูกค้าถามหายาที่เพิ่งซื้อไปว่าเหลือสต็อกไหม แล้วเจอการ์ด "สต็อกต่ำ" สีเหลืองพอดี

  1. เห็นการ์ดแจ้งเตือน "สต็อกต่ำ" ขึ้นในหน้าแดชบอร์ด
  2. คลิกที่การ์ด → ระบบพาไปหน้าคลังสินค้าโดยตรง กรองมาให้เฉพาะรายการที่ใกล้หมดแล้ว
  3. เช็คจำนวนคงเหลือของรายการที่ลูกค้าถาม แจ้งลูกค้าตามจริง — ถ้าจะสั่งเพิ่มให้ประสานฝ่ายที่ดูแลคลังต่อ

ตาราง 3 คอลัมน์กลางหน้า: นัดหมายวันนี้ (สูงสุด 6 รายการ, ปุ่ม "ดูทั้งหมด"→หน้าการจอง), ยอดขายล่าสุด (ใบเสร็จล่าสุด 5 ใบ, ปุ่ม "ขายใหม่"→หน้า POS), เคสที่กำลังดำเนินการ (สูงสุด 5 เคส, ปุ่ม "ดูทั้งหมด"→หน้า EMR)

เมนูด่วน (แถบล่างสุดของแดชบอร์ด)

ปุ่มไอคอนกลม 7 ปุ่มลัดไปหน้าที่ใช้บ่อย: ขายใหม่ (POS) · จองนัด · เคสใหม่ (EMR) · เพิ่มลูกค้า · คลังสินค้า · จัดการบริการ · ดูรายงาน

กรณีตัวอย่าง

ลูกค้าโทรมาขอเพิ่มชื่อเข้าระบบก่อนมาถึงคลินิก

  1. กดปุ่ม "เพิ่มลูกค้า" ที่เมนูด่วน — ปุ่มนี้พาไปที่หน้ารายชื่อลูกค้า ไม่ได้เปิดฟอร์มกรอกให้ทันที
  2. ถึงหน้ารายชื่อลูกค้าแล้วต้องกดปุ่ม + อีกครั้งเพื่อเปิดฟอร์มลงทะเบียน (ดูหัวข้อ 5.2)
  3. กรอกข้อมูลจากที่ลูกค้าบอกทางโทรศัพท์ บันทึกแล้วนัดให้ลูกค้ามาถึงคลินิกพร้อม HN ที่ออกให้แล้ว

ทุกบทบาทเห็นแดชบอร์ดนี้เป็นหน้าแรกเหมือนกันหมด จุดต่างเดียวคือการ์ดแจ้งเตือน "วงเงินใกล้หมดอายุ" ที่โผล่เฉพาะผู้มีสิทธิ์ดูรายงานวงเงิน — ถ้าไม่เห็นการ์ดนี้ ไม่ใช่ระบบพัง แต่เป็นเพราะสิทธิ์ไม่ถึง

2. การจอง (Booking)

เข้าจากเมนูด่วนบนแดชบอร์ด หรือเมนูหลัก "การจอง" — สลับมุมมองที่ปุ่มมุมขวาบน:

มุมมองเหมาะกับสิ่งที่เห็น
เดือน (ค่าเริ่มต้น)ดูภาพรวมทั้งเดือนปฏิทินเต็มเดือน วันละสูงสุด 3 นัดเป็นแถบสี ถ้าเกินมีปุ่ม "+N เพิ่มเติม"
รายสัปดาห์ดูโหลดงาน 7 วันข้างหน้าตาราง 7 วัน วันละสูงสุด 4 นัด
รายวันจัดคิววันนี้/พรุ่งนี้แบบละเอียดกริดช่วงเวลา 30 นาทีต่อช่อง สถานะ ว่าง(เขียว)/มีนัด(ฟ้า)/เต็ม(แดง)/ผ่านมาแล้ว(เทา)
รายการ (agenda)หานัดรอยืนยันจาก LINE/ค้นหาเฉพาะรายแยก "รอยืนยัน (จาก LINE)" การ์ดเหลือง กับ "นัดทั้งหมด" จัดกลุ่มตามวันที่
ตัวอย่างหน้าตา: สีสถานะช่องเวลา (มุมมองรายวัน) + ป้ายสถานะนัด
ว่าง มีนัด เต็ม ผ่านมาแล้ว
รอดำเนินการ ยืนยันแล้ว เช็คอินแล้ว ยกเลิก
กรณีตัวอย่าง

หมออยากรู้ว่าวันนี้มีคิวว่างช่วงบ่ายไหม ก่อนรับ walk-in เพิ่ม

  1. สลับมุมมองเป็น "รายวัน" แล้วเลื่อนไปวันนี้
  2. ดูกริดช่วงเวลาบ่าย — ช่องขึ้น "ว่าง · 2/4" (เขียว) = ยังรับได้อีก 2 คิว
  3. ช่อง "เต็ม" (แดง/ชมพู) กดไม่ได้ ต้องเลือกช่วงอื่น
  4. ถ้าหมอไม่ออกตรวจวันนี้ ทั้งวันจะขึ้น "ผู้ให้บริการไม่ออกตรวจในวันนี้" แทนกริด — แจ้งลูกค้าเลื่อนไปวันอื่น

2.2 จองนัดใหม่ — คนไข้ในระบบ vs Walk-in

กด "จองนัดใหม่" เปิดฟอร์ม 9 ขั้น: ประเภทผู้ป่วย (คนไข้ในระบบ/Walk-in) → ชื่อบริการ → วันที่-เวลา → ระยะเวลา (ค่าเริ่มต้น 30 นาที) → ช่องทางการจอง → ผู้ให้บริการ (เลือกได้) → ห้อง (เลือกได้) → หมายเหตุ → กด "จองนัด"

ตัวอย่างหน้าตา: ปุ่ม "จองนัดใหม่"
จองนัดใหม่
กรณีตัวอย่าง

ลูกค้าเก่าโทรมาขอนัด ระบบมีชื่ออยู่แล้ว

  1. เลือก "คนไข้ในระบบ" (ค่าเริ่มต้น) → พิมพ์ชื่อ/เบอร์ในช่องค้นหา live
  2. คลิกเลือกชื่อที่ถูกต้อง (เช็คเบอร์โทรประกอบถ้าชื่อซ้ำ) — เมื่อเลือกแล้วกลายเป็นการ์ดสีเขียวยืนยัน มีปุ่ม X ยกเลิกถ้าเลือกผิด
  3. กรอกบริการ เลือกวันเวลาจากตารางช่วงเวลาว่าง (ถ้าเลือกผู้ให้บริการไว้แล้ว ตารางกรองเฉพาะคิวของหมอคนนั้น)
  4. กด "จองนัด" — สำเร็จแล้วนัดขึ้นในปฏิทินทันที
กรณีตัวอย่าง

ลูกค้าใหม่โทรมาขอนัดล่วงหน้า ยังไม่เคยมาคลินิก

  1. สลับเป็น "ลูกค้า Walk-in" → กรอก "ชื่อลูกค้า Walk-in" (บังคับ), เบอร์โทร, อีเมล — ขั้นนี้ยังไม่สร้าง HN เป็นแค่ชื่อผูกกับนัดเฉยๆ
  2. กรอกบริการ/วันเวลาตามปกติ กด "จองนัด"
  3. ผลที่ตามมา: นัดนี้ยังไม่มีโปรไฟล์ลูกค้าในระบบ วันที่มาจริงกด "เช็คอิน" จะเจอ "เริ่มเคส EMR ไม่ได้ (No Customer Profile)" ต้องสร้างโปรไฟล์ลูกค้า/สแกนบัตรที่ POS ก่อน (ดู 2.6 และ 3)
กรณีตัวอย่าง

จองไม่สำเร็จเพราะกรอกไม่ครบ — กดปุ่ม "จองนัด" ทั้งที่ยังไม่ได้เลือกลูกค้า/กรอกบริการ ระบบไม่บันทึกและขึ้นกรอบข้อความ error สีชมพูภายในฟอร์มทันที อ่านข้อความว่าขาดช่องไหน แก้แล้วกดจองนัดใหม่

2.3 เลื่อนนัด

เปิดจาก "รายละเอียดนัด" — ปุ่ม "เลือกเวลาใหม่" แสดงเมื่อสถานะเป็น รอดำเนินการ/จองแล้ว/ยืนยันแล้ว

กรณีตัวอย่าง

ลูกค้าโทรมาขอเลื่อนนัดจากพรุ่งนี้เป็นสัปดาห์หน้า

  1. คลิกที่นัดในปฏิทิน → เปิด "รายละเอียดนัด" → กด "เลือกเวลาใหม่"
  2. เลือกวันที่ใหม่ + ช่วงเวลาจากตารางช่วงเวลาว่าง (แบบเดียวกับตอนจองใหม่)
  3. กด "ยืนยันเลื่อนนัด" — นัดเดิมหายจากช่องเวลาเก่า ไปโผล่ในช่องเวลาใหม่ทันที

2.4 ยกเลิกนัด + คืนเครดิต

กรณีตัวอย่าง

ลูกค้าจ่ายมัดจำผ่าน LINE ไว้แล้ว แต่ขอยกเลิกนัด

  1. คลิกนัดของลูกค้า → กด "ยกเลิกนัด" → กรอกเหตุผล (ไม่บังคับ แต่ควรกรอก)
  2. นัดนี้มาจากระบบจอง/kiosk และชำระเงินไว้แล้ว ระบบขึ้นคำเตือนสีเหลืองอำพันว่าจะคืนเงินเป็นเครดิตลูกค้าอัตโนมัติ (ไม่ใช่คืนเงินสด)
  3. กด "ยกเลิกนัด" ยืนยัน — เครดิตเข้าบัญชีลูกค้า ใช้ตัดในบิลครั้งถัดไปได้ทันที (เช็คได้ที่โปรไฟล์ลูกค้า แท็บ "วงเงิน")

2.5 ยืนยันนัดหมายจาก LINE

ลูกค้าที่จองผ่าน LINE จะค้างสถานะ "รอดำเนินการ" จนกว่าคลินิกจะกดยืนยัน

ตัวอย่างหน้าตา: การ์ด "รอยืนยัน (จาก LINE)" + ปุ่มดู/ยืนยันด่วน/ยืนยันนัดหมาย
รอยืนยัน (จาก LINE)

สมหญิง ใจดี · ปรึกษาผิว

พรุ่งนี้ 10:30 · จองผ่าน LINE เมื่อคืน

ยืนยันนัดหมาย

มุมมอง "รายการ" มีกล่องเหลืองรอยืนยันด้านบนสุด · ไอคอนตา = ดูรายละเอียด · ไอคอนถูก = ยืนยันด่วน

กรณีตัวอย่าง

เช็คนัดตอนเช้า เจอรายการ "รอยืนยัน (จาก LINE)" ค้างจากเมื่อคืน

  1. สลับมุมมอง "รายการ" — ส่วนบนสุดมีกล่องพื้นเหลือง "รอยืนยัน (จาก LINE)"
  2. กดปุ่มไอคอนตา (ดูรายละเอียด) เช็คว่าเวลา/บริการชนกับคิวที่มีอยู่หรือไม่
  3. ถ้าโอเค กดปุ่มไอคอนถูก (ยืนยันด่วน) หรือเข้าไปกดปุ่มเขียว "ยืนยันนัดหมาย" ในหน้าต่างรายละเอียด
  4. นัดเปลี่ยนเป็น "ยืนยันแล้ว" หายจากกล่องรอยืนยัน — ไม่สะดวกดูตอนนี้กด "ซ่อน/แสดง" ย่อกล่องไว้ได้ แต่รายการยังค้างรออยู่

2.6 เช็คอิน → เริ่มเคสผู้ป่วย

คลิกนัดหมายเปิด "รายละเอียดนัด" ส่วนล่างมีกล่อง "เริ่มเคสผู้ป่วย" (แสดงเมื่อสถานะ จองแล้ว/ยืนยันแล้ว/เช็คอินแล้ว/กำลังให้บริการ) เปลี่ยนหน้าตา 3 แบบตามสถานะลูกค้า

ตัวอย่างหน้าตา: กล่อง "เริ่มเคสผู้ป่วย" (มีโปรไฟล์แล้ว vs walk-in ไม่มี HN)
เช็คอิน + เปิดเคส EMR
เริ่มเคส EMR ไม่ได้ (No Customer Profile) — นัดนี้เป็น walk-in ยังไม่มี HN ต้องไปที่ POS สแกนบัตร/สร้างลูกค้าก่อน
กรณีตัวอย่าง

ลูกค้ามาถึงคลินิกตามนัดปกติ (มีโปรไฟล์ในระบบแล้ว) — เห็นกล่องสีม่วง "เริ่มเคสผู้ป่วย" พร้อมปุ่ม "เช็คอิน + เปิดเคส EMR" กดครั้งเดียว ระบบเช็คอินนัด เปิดเคส EMR ให้อัตโนมัติ แล้วพาไปหน้า EMR ของเคสนั้นทันที

กรณีตัวอย่าง

walk-in ที่ยังไม่มีโปรไฟล์ในระบบมาถึงคลินิก

  1. เปิดรายละเอียดนัดของ walk-in คนนี้ (จองแบบ "ลูกค้า Walk-in")
  2. แทนที่จะเห็นปุ่มเช็คอิน กลับขึ้นกล่องเหลืองอำพัน "เริ่มเคส EMR ไม่ได้ (No Customer Profile)"
  3. แก้ไข: ต้องไปที่ POS สแกนบัตรประชาชนหรือกรอกฟอร์มสร้างลูกค้าใหม่ (หัวข้อ 3) เพื่อให้ได้ HN ก่อน
  4. เมื่อมีโปรไฟล์แล้ว กลับมาเปิดรายละเอียดนัดอีกครั้ง ปุ่มจะเปลี่ยนเป็น "เช็คอิน + เปิดเคส EMR" ตามปกติ
กรณีตัวอย่าง

ลูกค้าเดินมาถามซ้ำว่าเคสเปิดหรือยัง — ถ้ามีคนเปิดเคสให้ไปแล้ว กล่องจะเปลี่ยนเป็นสีเขียว "สร้างเคสแล้ว" พร้อมเลขที่เคสและปุ่ม "ดูใน EMR" กดปุ่มนี้ไปดูสถานะได้เลย ไม่ต้องกดเช็คอินซ้ำ (กดซ้ำจะไม่เปิดเคสใหม่ทับของเดิม)

3. เปิดเคสที่ POS — ค้นหา/สแกนบัตร/สร้างลูกค้าใหม่

เข้าเมนู POS แท็บ "สร้างเคส + ขาย" (ค่าเริ่มต้น) — กล่องแรกที่ต้องทำคือเลือกลูกค้า ก่อนเลือกบริการได้

3.1 ค้นหาลูกค้าที่มี HN อยู่แล้ว

ช่องค้นหา "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *" — ต้องพิมพ์อย่างน้อย 3 ตัวอักษรระบบถึงเริ่มค้นหา

ตัวอย่างหน้าตา: ช่องค้นหาลูกค้า + ปุ่มสแกนบัตร / ถ่ายรูปบัตร
กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร) สแกนบัตรประชาชน ถ่ายรูป/อัปโหลดบัตร

สมหญิง ใจดี

HN: 68-0042 081-234-5678

พิมพ์แล้วรายชื่อเด้งใต้ช่อง (ป้าย HN ม่วง + เบอร์โทร) — คลิกเลือกกลายเป็นการ์ดยืนยัน · ปุ่มสแกน (ฟ้า) และถ่ายรูป (ม่วง) ค้นหา/สร้าง HN อัตโนมัติ

กรณีตัวอย่าง

ลูกค้าเดินเข้ามาบอกชื่อ

  1. พิมพ์ชื่อในช่องค้นหา (≥3 ตัวอักษร) พิมพ์น้อยกว่านั้นระบบเตือน "กรอกอย่างน้อย 3 ตัวอักษรเพื่อค้นหา"
  2. รอ 0.3 วิ ระบบค้นหาอัตโนมัติ ขึ้นรายชื่อพร้อมป้าย "HN: {เลข}" และเบอร์โทรกำกับ (เช็คเบอร์ประกอบถ้าชื่อซ้ำ)
  3. คลิกเลือกชื่อที่ถูกต้อง — ช่องค้นหาเปลี่ยนเป็นการ์ดยืนยันสีเขียว มีปุ่ม X เปลี่ยนลูกค้าใหม่ถ้าเลือกผิด
  4. ขึ้น "ไม่พบลูกค้าที่ตรงกับ..." = ยังไม่เคยมีในระบบ ต้องสแกนบัตรหรือสร้างใหม่ (3.2-3.3)
  5. ขึ้นเหลืองอำพัน "พบลูกค้าแต่ยังไม่มี HN..." = เลือกจากรายการตรงๆ ไม่ได้ ต้องสแกนบัตรเพื่อสร้าง HN ก่อน

3.2 สแกน/ถ่ายรูปบัตรประชาชน

ปุ่ม "สแกนบัตรประชาชน" (เครื่องอ่านชิป/แอป Companion บนแท็บเล็ต) และ "ถ่ายรูป/อัปโหลดบัตร" (ไม่มีเครื่องอ่าน หรือลูกค้าต่างชาติ — ใช้ได้ทั้งบัตรไทยและพาสปอร์ต) ระบบค้นหาลูกค้าอัตโนมัติด้วยตรรกะเดียวกัน 3 แบบ:

กรณีตัวอย่าง

ลูกค้าเก่าที่มีบัตรผูกกับ HN อยู่แล้ว — เสียบบัตร อ่านสำเร็จ เลขบัตรตรงกับลูกค้าที่มี HN อยู่แล้ว ระบบผูกลูกค้าให้ทันที ขึ้นข้อความเขียว "พบลูกค้าในระบบ — {ชื่อ} (HN: {เลข})" ไม่ต้องทำอะไรต่อ ไปเลือกบริการได้เลย

กรณีตัวอย่าง

ลูกค้าทำบัตรประชาชนใหม่ เลขบัตรเปลี่ยน แต่เคยมาคลินิกแล้ว

  1. สแกนบัตร → ไม่พบเลขบัตรนี้ในระบบ แต่ชื่อตรงกับลูกค้าเดิมที่เคยลงทะเบียนไว้
  2. ขึ้นกล่องเหลืองอำพัน "ไม่พบเลขบัตรนี้ในระบบ — พบลูกค้าที่ชื่อตรงกัน โปรดยืนยันว่าใช่คนเดียวกันหรือไม่" พร้อมชื่อ/HN/เบอร์โทร
  3. เช็คกับลูกค้าตรงหน้า (ถามเบอร์โทร/HN เดิมประกอบ) — ถ้าใช่ กดปุ่มเขียว "ใช่คนนี้" → ผูกลูกค้าคนนั้นทันที พร้อมบันทึกเลขบัตรใหม่เข้าโปรไฟล์อัตโนมัติ
  4. ถ้าไม่ใช่คนเดียวกัน กดปุ่ม "ไม่ใช่ — สร้าง HN ใหม่" แทน — ไปเปิดฟอร์มสร้างลูกค้าใหม่ (3.3) กันข้อมูลชนกัน
กรณีตัวอย่าง

ลูกค้าใหม่จริงๆ ไม่เคยมาคลินิกเลย — สแกนบัตร/ถ่ายรูปแล้วไม่พบทั้งเลขบัตรและชื่อ ระบบเปิดฟอร์มสร้างลูกค้าใหม่อัตโนมัติ พร้อมข้อความ "ไม่พบในระบบ — กรอกข้อมูลเพื่อสร้าง HN ใหม่" และดึงชื่อ/เลขบัตร/วันเกิดจากบัตรมาใส่ในฟอร์มให้แล้ว (ยังแก้ไขได้ทุกช่องถ้า OCR อ่านผิด) ตรวจข้อมูลแล้วทำต่อตามหัวข้อ 3.3

กรณีตัวอย่าง

เครื่องอ่านบัตรไม่ยอมอ่าน

  1. เสียบบัตรแล้วรอ ขึ้นข้อความแดง เช่น "อ่านเลขบัตรไม่สำเร็จ — เสียบบัตรให้แน่นแล้วลองใหม่" หรือ "เบราว์เซอร์นี้อ่านบัตรไม่ได้ — ต้องใช้ Chrome/Edge (ไม่รองรับ Safari)"
  2. กด "ลองสแกนใหม่" — ถ้ายังไม่ได้ เปลี่ยนไปใช้ "ถ่ายรูป/อัปโหลดบัตร" แทน
  3. ถ่ายรูปแล้วอ่านไม่ชัด (ความมั่นใจต่ำ) ระบบเตือนเป็น % ความมั่นใจ ให้ตรวจข้อมูลละเอียดขึ้นก่อนกด "ยืนยัน"
สแกนผ่านแท็บเล็ตครั้งแรกใต้ปุ่มสแกนมีลิงก์ "ตั้งค่าเครื่องอ่านบัตร" (ติดตั้งแอป Companion → คัดลอก Device ID → ตั้งค่า API/Token ในแอป ต้องขอ Token จากแอดมิน) ทำครั้งเดียวต่อเครื่อง ไม่ต้องทำซ้ำทุกครั้งที่สแกน

3.3 สร้างลูกค้าใหม่ — ฟอร์ม "ลงทะเบียนลูกค้าใหม่"

แท็บ: ทั่วไป (ชื่อ/ชื่อเล่น/เบอร์โทร/HN/ระดับ/ป้ายกำกับ) · ส่วนตัว (เลขบัตร/พาสปอร์ต/วันเกิด/เพศ) · ที่อยู่ · การแพทย์ · ฉุกเฉิน · ติดต่อ — ช่องบังคับ (มี * แดง): ชื่อ, ชื่อเล่น, เบอร์โทรศัพท์

กรณีตัวอย่าง

ออก HN แบบอัตโนมัติ (ทางที่ใช้บ่อยที่สุด) — ช่อง HN (OPD) เป็นสวิตช์ Auto อยู่แล้ว (ค่าเริ่มต้น) ล็อกไม่ให้แก้ กรอกชื่อ/ชื่อเล่น/เบอร์โทร (บังคับ) กด "บันทึกข้อมูล" ระบบออกเลข HN ให้อัตโนมัติและผูกลูกค้าเข้าเคสที่กำลังเปิดอยู่ทันที

กรณีตัวอย่าง

ต้องออก HN แบบระบุเลขเอง (เช่น ย้ายเลขจากระบบเดิม) — ที่ช่อง HN สลับสวิตช์จาก Auto เป็น Manual พิมพ์เลข HN ที่ต้องการ กรอกส่วนที่เหลือแล้วบันทึก — ถ้าเลขซ้ำระบบแจ้งเตือนให้แก้ก่อนบันทึกสำเร็จ

4. เช็คอิน → เปิด EMR (สรุปเส้นทางที่ใช้บ่อยที่สุด)

สถานการณ์ทำอะไรผลลัพธ์
ลูกค้ามีนัด + มีโปรไฟล์แล้วเปิดรายละเอียดนัด → กด "เช็คอิน + เปิดเคส EMR"ระบบเช็คอิน+เปิดเคสให้เอง พาไปหน้า EMR ทันที
walk-in ไม่มีนัด แต่มี HN แล้วPOS แท็บ "สร้างเคส + ขาย" → ค้นหาด้วย HN/ชื่อ/เบอร์ (3.1) → เลือกบริการเปิดเคสตรงจาก POS ได้เลยโดยไม่ต้องผ่านหน้าการจอง
walk-in ไม่มีนัด และไม่เคยมีโปรไฟล์POS → สแกน/ถ่ายรูปบัตร (3.2) → หา HN ไม่เจอ → สร้างลูกค้าใหม่ (3.3)ได้ HN ใหม่ + เปิดเคสต่อได้ทันทีในหน้าเดียวกัน
กรณีตัวอย่าง

walk-in เดินเข้ามาโดยไม่ได้จองล่วงหน้าเลย

  1. ไม่ต้องหาในหน้าการจอง — ไปที่เมนู POS ตรงๆ แท็บ "สร้างเคส + ขาย"
  2. ลองค้นหาชื่อ/เบอร์โทรก่อน (3.1) เผื่อเคยมาคลินิกแล้ว
  3. ถ้าหาไม่เจอ สแกนบัตร/ถ่ายรูปบัตร (3.2) ให้ระบบเช็คอีกชั้นว่าไม่ใช่คนเดิมที่สะกดชื่อไม่ตรง
  4. ถ้ายืนยันเป็นคนใหม่จริง กรอกฟอร์มสร้างลูกค้า (3.3) ออก HN ให้
  5. เลือกบริการในแคตตาล็อกด้านล่าง กดเข้าสู่ขั้นตอนชำระเงิน/เปิดเคสตามปกติของ POS

5. ลูกค้า — ค้นหา / เพิ่ม / ดูโปรไฟล์

เมนู "ลูกค้า (CRM)" — ทะเบียนกลางของลูกค้าทุกคน ค้นหาด้วยชื่อ/เบอร์โทร/เลข OPD, ชิปกรองด่วน (ทั้งหมด/VIP/Platinum/Gold/Silver/Bronze/มาใช้บริการล่าสุด 30 วัน) และปุ่ม "ตัวกรอง" ขั้นสูง

กรณีตัวอย่าง

หัวหน้าขอรายชื่อลูกค้า VIP ที่เกิดเดือนนี้เพื่อส่งโปรโมชั่นวันเกิด

  1. กดชิป "VIP" ก่อน (กรองเฉพาะ Gold+Platinum)
  2. กด "ตัวกรอง" เปิดแผงขั้นสูง เลือก "เกิดเดือนนี้"
  3. รายการที่ตรงทั้งสองเงื่อนไขขึ้นเป็นชิปแสดงตัวกรองที่ใช้อยู่ (กดกากบาทเอาออกทีละอัน หรือ "ล้างตัวกรอง")
  4. ถ้ามีสิทธิ์ จะมีปุ่ม "ส่งออก"/"ส่ง SMS (N)" ใช้ต่อได้ทันที (สิทธิ์นี้มักเป็นของแอดมิน/เซล)

5.2 เพิ่มลูกค้าใหม่จากเมนูลูกค้าโดยตรง

ปุ่ม + ข้างช่องค้นหา (ไม่ใช่การสแกนบัตร ทางนี้กรอกมือล้วน เหมาะกับรับข้อมูลทางโทรศัพท์)

ตัวอย่างหน้าตา: ปุ่มเพิ่มลูกค้า + ฟอร์มลงทะเบียน (ช่องบังคับ + HN Auto)
เพิ่มลูกค้าใหม่
ชื่อ *ชื่อจริง
ชื่อเล่น *ชื่อเล่น
เบอร์โทร *08x-xxx-xxxx
HNAuto ล็อก

บังคับกรอก ชื่อ/ชื่อเล่น/เบอร์โทร · HN ค่าเริ่มต้น Auto (ล็อกแก้ไม่ได้) · บันทึกแล้วผูกเข้าเคสทันที

กรณีตัวอย่าง

ลูกค้าโทรมาสมัครสมาชิกล่วงหน้าก่อนมาถึงคลินิก

  1. กดปุ่ม + มุมขวาของช่องค้นหา → เปิดฟอร์มเดียวกับตอนสแกนบัตรไม่เจอที่ POS (3.3)
  2. กรอกชื่อ/ชื่อเล่น/เบอร์โทร (บังคับ) HN ปล่อย Auto ตามปกติ
  3. กด "บันทึกข้อมูล" — ได้ HN ทันที แจ้งเลข HN ให้ลูกค้าทางโทรศัพท์เพื่อใช้ตอนมาถึงคลินิกจริง

5.3 ดูโปรไฟล์ลูกค้า

คลิกแถวลูกค้า เปิดหน้าต่างโปรไฟล์ 3 แท็บ: ภาพรวม (ข้อมูลส่วนตัว/ที่อยู่/ป้ายกำกับ/การแพทย์/ยอดใช้จ่าย/แต้มสะสม) · วงเงิน (บัตร/กระเป๋าเงินสมาชิกทั้งหมด) · ประวัติ (ตารางเครดิตเข้า-ออกทุกรายการ) — ปุ่ม "ลบลูกค้า" โผล่เฉพาะผู้มีสิทธิ์เท่านั้น (ปกติไม่ใช่เจ้าหน้าที่ต้อนรับทั่วไป)

ตัวอย่างหน้าตา: หน้าต่างโปรไฟล์ลูกค้า 3 แท็บ + การ์ดรวมวงเงิน + แต้มสะสม
ภาพรวม วงเงิน ประวัติ
รวมวงเงินคงเหลือ
฿8,500
แต้มสะสม
1,240

เปิดที่แท็บ "ภาพรวม" เสมอ · กดการ์ดหรือแท็บ "วงเงิน" ดูบัตร/ยอดคงเหลือต่อใบ · "ประวัติ" = เครดิตเข้า-ออก

กรณีตัวอย่าง

ลูกค้าถามยอดแต้มสะสม/วงเงินคงเหลือของตัวเอง — เปิดโปรไฟล์อยู่ที่แท็บ "ภาพรวม" (เริ่มต้นเสมอ) เห็นแต้มสะสมและการ์ด "รวมวงเงิน" กดที่การ์ดหรือคลิกแท็บ "วงเงิน" โดยตรงดูรายละเอียดจำนวนบัตร/ยอดคงเหลือต่อใบ ถ้าอยากรู้ที่มาเครดิตล่าสุด คลิกแท็บ "ประวัติ" ดูตารางวันที่/รายการ/จำนวน/ยอดคงเหลือ

กรณีตัวอย่าง

ลูกค้าย้ายบ้าน ขอแก้ที่อยู่/เบอร์โทรใหม่ — เปิดโปรไฟล์ กด "แก้ไข" มุมล่างขวา เปิดฟอร์มเดียวกับตอนสร้างใหม่แต่ข้อมูลเดิมเติมมาให้ครบ (โหมดแก้ไข ช่อง HN เป็นช่องกรอกธรรมดา ไม่มีสวิตช์ Auto/Manual) แก้แท็บ "ที่อยู่" หรือ "ทั่วไป" แล้วกด "บันทึกข้อมูล" — อัปเดตทันที ไม่กระทบ HN หรือประวัติการซื้อเดิม

สรุปสิทธิ์ที่บทบาทนี้ใช้ได้ / ใช้ไม่ได้

การทำงานเจ้าหน้าที่ต้อนรับใช้ได้ไหม
อ่านแดชบอร์ด, เมนูด่วนได้ — ยกเว้นการ์ด "วงเงินใกล้หมดอายุ" ที่บางระบบจำกัดเฉพาะแอดมิน/เซล
จองนัด/เลื่อนนัด/ยกเลิกนัด/ยืนยันนัดจาก LINE/เช็คอิน+เปิดเคสได้ทั้งหมด
แก้ไขเวลาทำการ/วันหยุด/ช่วงเวลาปิด/ความจุห้องไม่ได้ — เห็นได้แต่แก้ไม่ได้ (เฉพาะแอดมิน)
ค้นหาลูกค้า, สแกน/ถ่ายรูปบัตร, สร้างลูกค้าใหม่ได้ทั้งหมด
ดูโปรไฟล์ลูกค้า, แก้ไขข้อมูล, ดูประวัติการรักษา/ซื้อ/สิทธิ์แพ็กเกจ/เครดิตได้ทั้งหมด
ลบลูกค้าปกติไม่ได้ — ต้องมีสิทธิ์เฉพาะ (ปุ่มไม่โผล่ถ้าไม่มีสิทธิ์)
ส่งออกรายชื่อ / ส่ง SMS แจ้งเตือนกลุ่มลูกค้าขึ้นกับสิทธิ์ที่คลินิกตั้งไว้ (ปกติเป็นของแอดมิน/เซล)
เอกสารนี้ครอบเฉพาะแดชบอร์ด/การจอง/เปิดเคส+สแกนบัตรที่ POS/เช็คอิน→EMR/จัดการลูกค้า — ไม่รวมขั้นตอนรับชำระเงิน/ออกใบเสร็จ/คืนเงินที่ POS (ดูคู่มือแคชเชียร์) และไม่รวมหน้าจอ EMR ฝั่งหมอ/พยาบาล
💼

ฝ่ายขาย (Sale)

ปิดการขายบริการ/แพ็กเกจ ดูแลวงเงินและลูกค้าประจำ

เมนูของคุณ

ขายหน้าร้าน (POS) ลูกค้า แพ็กเกจ โปรโมชัน วงเงินใกล้หมดอายุ

ทุก feature ในหัวข้อนี้มีกล่อง "กรณีตัวอย่าง" อธิบายทีละขั้นตอน ทางเลือก เงื่อนไข/สิทธิ์ และผลลัพธ์ ให้ฝ่ายขายอ่านแล้วทำตามได้ทันทีโดยไม่ต้องเดา

1. เลือกลูกค้า / สแกนบัตรประชาชน

หน้า "สร้างเคส + ขาย" → กล่อง "สร้างเคสใหม่" → ช่อง "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *" (ต้องเลือกลูกค้าก่อนเปิดเคสเสมอ — POS ไม่ออกเลข HN เอง) พิมพ์อย่างน้อย 3 ตัวอักษร ระบบค้นหาอัตโนมัติหลัง 0.3 วิ หรือกดปุ่ม "สแกนบัตรประชาชน" (เครื่องอ่านชิป/แอป Companion) หรือ "ถ่ายรูป/อัปโหลดบัตร" (OCR — บัตรไทยและพาสปอร์ต)

ตัวอย่างหน้าตา: ช่องค้นหาลูกค้า + ปุ่มสแกนบัตร / ถ่ายรูปบัตร + การ์ดผลค้นหา (ป้าย HN)
กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร) สแกนบัตรประชาชน ถ่ายรูป/อัปโหลดบัตร

สมหญิง ใจดี

HN: OPD-00123 081-234-5678

เลือกลูกค้าก่อนเปิดเคสเสมอ · คลิกผลค้นหา → กลายเป็นการ์ดยืนยัน · ปุ่มสแกน (ฟ้า)/ถ่ายรูป (ม่วง) หาไม่พบ = เปิดฟอร์มสร้าง HN ใหม่

กรณีตัวอย่าง 1

ลูกค้าเก่ามี HN อยู่แล้ว พิมพ์ค้นหาตรงๆ

  1. พิมพ์ "0812345678" ในช่องค้นหา
  2. ระบบเจอ 1 รายชื่อ พร้อมป้าย "HN: OPD-00123" — คลิกเลือก
  3. ช่องค้นหาเปลี่ยนเป็นการ์ดยืนยันชื่อ+HN+เบอร์โทร พร้อมปุ่ม X (เปลี่ยนลูกค้า)
  4. ผลลัพธ์: ลูกค้าถูกผูกเข้าเคส พร้อมไปขั้นเลือกบริการต่อ
กรณีตัวอย่าง 2

ลูกค้าใหม่ ไม่เคยมีในระบบ ไม่มีบัตร

  1. พิมพ์ชื่อ/เบอร์แล้วไม่พบผลลัพธ์ — ขึ้น "ไม่พบลูกค้าที่ตรงกับ..."
  2. กดปุ่ม "สแกนบัตรประชาชน" หรือ "ถ่ายรูป/อัปโหลดบัตร" แทนการค้นหาชื่อ
  3. อ่านบัตรสำเร็จแต่ไม่พบทั้งเลขบัตรและชื่อในระบบ → เปิดฟอร์ม "ลงทะเบียนลูกค้าใหม่" อัตโนมัติ พร้อมข้อความ "ไม่พบในระบบ — กรอกข้อมูลเพื่อสร้าง HN ใหม่ ({ชื่อจากบัตร})"
  4. ตรวจ/เติมช่องบังคับ (ชื่อ, ชื่อเล่น, เบอร์โทร) — HN โหมด Auto อยู่แล้ว
  5. กด "บันทึกข้อมูล" → ลูกค้าใหม่ถูกสร้างและผูกเข้าเคสทันที ไม่ต้องค้นหาซ้ำ
กรณีตัวอย่าง 3

ลูกค้าเก่าแต่ CID ในบัตรไม่ตรงกับที่บันทึกไว้ (ข้อมูลเก่าไม่มีเลขบัตร)

  1. สแกนบัตร → ไม่พบเลขบัตรในระบบ แต่ชื่อ-นามสกุลตรงกับลูกค้าเดิม
  2. ขึ้นกล่องเหลืองอำพัน "ไม่พบเลขบัตรนี้ในระบบ — พบลูกค้าที่ชื่อตรงกัน โปรดยืนยันว่าใช่คนเดียวกันหรือไม่" พร้อมรายชื่อผู้สมัคร
  3. ทางเลือก ก: กดปุ่มเขียว "ใช่คนนี้" → ผูกลูกค้าคนนั้นเข้าเคส + บันทึกเลขบัตรเข้าโปรไฟล์อัตโนมัติ (กันสร้าง HN ซ้ำ)
  4. ทางเลือก ข: กด "ไม่ใช่ — สร้าง HN ใหม่" → ไปเปิดฟอร์มลงทะเบียนใหม่ (เหมือนกรณี 2)

2. เลือกบริการ/แพ็กเกจ (การ์ด/ค้นหา/หมวด)

แคตตาล็อกแบบการ์ด ขายเฉพาะบริการและคอร์ส/แพ็กเกจ (ไม่มีสินค้าปลีก) มีแถบค้นหา "ค้นหาบริการ / คอร์ส…" (ค้นได้ทั้งชื่อและราคา), ปุ่มกรอง ทั้งหมด/บริการ/แพ็คเกจ, ชิปหมวดหมู่, ปุ่มสลับขนาดการ์ด

ตัวอย่างหน้าตา: การ์ดบริการ/แพ็กเกจ + แถบกรอง ทั้งหมด/บริการ/แพ็คเกจ + ชิปหมวด
ค้นหาบริการ / คอร์ส…
ทั้งหมด บริการ แพ็คเกจ
ทั้งหมด โบท็อกซ์ ฟิลเลอร์ คอร์ส/แพ็กเกจ

โบท็อกซ์หน้าผาก

โบท็อกซ์฿3,999
สินค้าสิ้นเปลือง 2 รายการ
คอร์ส

Filler Program 3 ครั้ง

คอร์ส/แพ็กเกจ฿15,000

แตะการ์ด 1 ครั้ง = เข้าตะกร้าทันที · แพ็กเกจมีป้าย "คอร์ส" มุมซ้ายบน · บริการที่มีสินค้าสิ้นเปลืองผูกไว้ขึ้นบรรทัดเขียว

กรณีตัวอย่าง 1

ขายบริการเดี่ยวให้ลูกค้าเดินเข้ามา — แตะการ์ด "โบท็อกซ์หน้าผาก" 1 ครั้ง เข้าตะกร้าทันที ไม่มีขั้นยืนยัน แตะซ้ำเพิ่มจำนวนเป็น 2 อัตโนมัติ ถ้าบริการมีสินค้าสิ้นเปลืองผูกไว้ (เช่นเข็ม/ถุงมือ) จะดึงเข้าตะกร้าเป็นรายการย่อยสีเขียวอ่อนอัตโนมัติ ราคา ฿0 (เป็นต้นทุน ไม่ใช่ยอดขาย)

กรณีตัวอย่าง 2

ลูกค้าจำชื่อบริการไม่ได้ จำได้แต่ราคา — พิมพ์ "1500" ในช่องค้นหา (ค้นได้ทั้งชื่อและราคา) ระบบกรองการ์ดที่ราคา 1,500 บาทมาแสดง เลือกที่ตรงกับที่ลูกค้าอธิบาย

กรณีตัวอย่าง 3

ขายคอร์ส/แพ็กเกจ — กดปุ่มกรอง "แพ็คเกจ" หรือชิป "คอร์ส/แพ็กเกจ" การ์ดแพ็กเกจมีป้าย "คอร์ส" มุมซ้ายบนแยกจากบริการเดี่ยวชัดเจน แตะเพื่อเพิ่มลงตะกร้าเหมือนบริการ

3. ใช้สิทธิ์แพ็กเกจ (Redeem — ตัดใช้สิทธิ์ ไม่คิดเงิน)

แสดงเฉพาะเมื่อเลือกลูกค้าแล้ว — กล่อง "สิทธิ์แพ็คเกจของลูกค้า" กด "ใช้สิทธิ์" เพื่อเปิด OPD ตัดใช้สิทธิ์ (ไม่คิดเงิน) แล้วให้หมอลงผลการรักษา

ตัวอย่างหน้าตา: การ์ดสิทธิ์แพ็กเกจ + ปุ่ม "ใช้สิทธิ์"

Filler Program

เหลือ 3 ครั้ง
ใช้สิทธิ์

กด "ใช้สิทธิ์" → เปิด OPD ตัดสิทธิ์มูลค่า ฿0 (ไม่ผ่านหน้าชำระเงิน) → พาเข้า EMR ให้หมอลงผล

กรณีตัวอย่าง

ลูกค้ามีคอร์ส Filler ค้างอยู่ 3 ครั้ง มาใช้สิทธิ์วันนี้

  1. เลือกลูกค้าแล้ว ระบบแสดงการ์ดแพ็กเกจ "Filler Program" พร้อมยอดคงเหลือ "เหลือ 3 ครั้ง"
  2. ถ้าสิทธิ์เป็นแบบ "เลือกได้" (มีตัวเลือกยี่ห้อ/บริเวณ) ต้องเลือกจากดรอปดาวน์ "— เลือกรายการที่ใช้ —" ก่อน ปุ่มใช้สิทธิ์จะกดไม่ได้จนกว่าจะเลือก
  3. กด "ใช้สิทธิ์" → กล่องยืนยัน "เปิด OPD เพื่อตัดใช้สิทธิ์ 'Filler 1cc' 1 ครั้ง (ไม่คิดเงิน) ใช่หรือไม่?" → ยืนยัน
  4. ระบบเปิดเคส OPD มูลค่า ฿0 ตัดสิทธิ์อัตโนมัติ (เหลือ 2 ครั้ง) พาไปหน้า EMR ให้หมอลงผลการรักษาต่อทันที — ไม่ต้องผ่านหน้าชำระเงินเลย
  5. ถ้าลูกค้าไม่มีสิทธิ์เหลือเลย กล่องขึ้น "ลูกค้ารายนี้ไม่มีสิทธิ์คงเหลือ" แทนรายการ

4. ผู้ขาย (Sale) + การขออนุมัติ

ป้าย "ผู้ขาย (Sale)" ค่าเริ่มต้น = ผู้เข้าสู่ระบบ — ดรอปดาวน์เลือกพนักงานที่ canSell เป็นจริงเท่านั้น (สิทธิ์ pos.sale.create) กำหนดผู้ขายคนอื่นแบบมีผลทันที (ไม่ต้องรออนุมัติ) ต้องมี rbac.permission.manage หรือเป็น super_admin

ตัวอย่างหน้าตา: แถบเลือก "ผู้ขาย (Sale)" + สถานะขออนุมัติเปลี่ยนผู้ขาย
ผู้ขาย (Sale) ค่าเริ่มต้น = ผู้เข้าสู่ระบบ
คุณสมชาย (ฉัน)
⏳ ส่งคำขอเปลี่ยนผู้ขายเป็น B แล้ว — รออนุมัติที่เมนู "รวมการอนุมัติ"
✅ อนุมัติแล้ว — ผู้ขายของบิลนี้คือ B
❌ ไม่อนุมัติให้เปลี่ยนเป็น B — ผู้ขายของบิลนี้ยังเป็นคุณ
กรณีตัวอย่าง

พนักงานขายทั่วไปกำหนดผู้ขายเป็นคนอื่น แต่ไม่มีสิทธิ์

  1. แคชเชียร์ A (ไม่มีสิทธิ์ rbac.permission.manage) เปิดบิลให้ลูกค้า แต่ต้องการให้ยอดขายไปนับที่ B (เซลล์ที่ปิดการขายจริง)
  2. A เปลี่ยนดรอปดาวน์ "ผู้ขาย (Sale)" จากตัวเองเป็น "B"
  3. ระบบขึ้นทันที: "⏳ ต้องรออนุมัติ — เคสจะเปิดในชื่อของคุณก่อน และระบบจะส่งคำขอเปลี่ยนผู้ขายให้ผู้มีสิทธิ์อนุมัติ" — ยิงคำขอไปเซิร์ฟเวอร์ทันทีตอนเลือก ไม่ต้องรอกดชำระเงิน
  4. ข้อความเปลี่ยนเป็น "⏳ ส่งคำขอเปลี่ยนผู้ขายเป็น B แล้ว — รออนุมัติที่เมนู 'รวมการอนุมัติ'"
  5. A เปิดเคส+ขายต่อได้ตามปกติ — บิลจะเปิดในชื่อ A ไปก่อน (ยอดขาย/คอมมิชชั่นยังคงอยู่ที่ A จนกว่าจะอนุมัติ)
  6. ผู้มีสิทธิ์อนุมัติ (ค่าเริ่มต้น = super_admin เท่านั้น — เจ้าของคลินิกเพิ่มบทบาทอื่นให้อนุมัติได้) เข้าเมนู "รวมการอนุมัติ" แท็บ "เปลี่ยนเซลล์" กด อนุมัติ/ไม่อนุมัติ — คนแรกที่กดชนะ (race ถูกต้อง)
  7. ถ้าอนุมัติ: หน้า POS ของ A (ยังเปิดค้างอยู่ ไม่ต้องรีเฟรช) ตรวจพบผลอัตโนมัติภายใน 5 วินาที ขึ้น toast เขียว "อนุมัติแล้ว — ผู้ขายของบิลนี้เป็น B"
  8. ถ้าไม่อนุมัติ: A เห็น toast แดง และดรอปดาวน์เด้งกลับเป็นชื่อ A เองอัตโนมัติ
  9. ทางเลือก: ถ้า A เปลี่ยนใจกดกลับมาเป็นตัวเองก่อนมีการตัดสิน คำขอที่ส่งไปถูกยกเลิกอัตโนมัติ
  10. Edge case: A ปิดบิลทิ้งไว้ไม่กดชำระเงินเลย คำขอที่ค้างไม่ถูกผูกกับเคสจะถูกเก็บกวาดอัตโนมัติ (TTL)
กรณีตัวอย่าง (ผู้มีสิทธิ์โดยตรง)

Manager กำหนดผู้ขายเป็นคนอื่นตรงๆ — ผู้จัดการที่มีสิทธิ์ rbac.permission.manage เลือกดรอปดาวน์ผู้ขายเป็น "C" — มีผลทันที ไม่ต้องส่งคำขอ ขึ้น "✓ บันทึกผู้ขายเป็น C แล้ว — จะมีผลทันทีที่เปิดเคส"

5. ผู้ให้บริการรายการนี้ — หรือข้ามไป assign ที่ EMR ทีหลัง

หน้า "สร้างเคส + ขาย" ไม่มีขั้นตอนมอบหมายหมอ/พยาบาล/ผู้ช่วยระดับเคสอีกต่อไป (ย้ายออกตามคำสั่ง CTO) — เลือกได้ 2 ทาง: ก) เลือกตอนขายที่ POS (แถบพับเก็บ "ผู้ให้บริการรายการนี้" ใต้แต่ละรายการ — มีผลทันทีไม่ต้องอนุมัติ) ข) ข้ามไปกำหนดที่หน้า EMR ของเคสนั้น

ตัวอย่างหน้าตา: แถบ "ผู้ให้บริการรายการนี้" — เลือกหมอ/พยาบาล/ผู้ช่วย
ผู้ให้บริการรายการนี้
เลือกหมอ (ไม่บังคับ)
นพ.สมชาย ใจดี
เลือกพยาบาล (ไม่บังคับ)
น้องมิ้นท์ · น้องแนน
เลือกผู้ช่วย (ไม่บังคับ)
— ไม่ระบุผู้ช่วย —

หมอ = เลือกได้คนเดียว (ฟ้า) · พยาบาล/ผู้ช่วย = เลือกได้หลายคน (ชมพู/ม่วง) · พับเก็บจะเห็นสรุปสั้นๆ เช่น "หมอ: นพ.สมชาย · พยาบาล: น้องมิ้นท์"

กรณีตัวอย่าง 1

เลือกหมอ/พยาบาล/ผู้ช่วยต่อรายการเลยที่ POS

  1. ในตะกร้ามีรายการ "ฉีดฟิลเลอร์ใต้ตา" — กดขยายแถบ "ผู้ให้บริการรายการนี้" (ปิดอยู่โดยค่าเริ่มต้น)
  2. เลือกหมอ 1 คนจาก "เลือกหมอ" (เลือกได้คนเดียว เลือกใหม่แทนที่คนเดิม) พิมพ์ค้นหาชื่อในกล่องที่เด้งขึ้น
  3. เลือกพยาบาล/ผู้ช่วยเพิ่มได้หลายคนจาก "เลือกพยาบาล"/"เลือกผู้ช่วย"
  4. การเลือกมีผลทันที ไม่ต้องรออนุมัติ — พับแถบเก็บจะเห็นสรุปสั้นๆ เช่น "หมอ: นพ.สมชาย · พยาบาล: น้องมิ้นท์"
  5. ถ้าบิลมี 2 บริการโดยหมอคนละคน กำหนดต่อบรรทัดแยกกันได้ — บิลเดียวส่งค่าคอมมิชชั่นแยกไปหมอแต่ละคนตามรายการที่ผูกไว้
กรณีตัวอย่าง 2

ไม่เลือกใครเลย ข้ามไป assign ที่ EMR — เก็บเงินให้ลูกค้าโดยไม่แตะแถบ แถบยังพับเก็บอยู่ แสดงสรุป "ตามทีมงานเคส" สีเทา ปิดบิล → เคสเปิด (หรือค้างที่ "เคสรอปิด") หมอ/พยาบาลไปเปิดเคสนั้นที่หน้า EMR แล้วกำหนดทีมผู้ดูแลเองตอนลงบันทึกการรักษา — ไม่กระทบยอดขายหรือบิลที่ปิดไปแล้ว

6. ส่วนลด / ค่าธรรมเนียม / แก้ราคาแมนนวล

ตัวอย่างหน้าตา: ตะกร้าสินค้า "รายการขาย" (ทั้งใบ)
รายการขาย (2)

ฉีดฟิลเลอร์ใต้ตา

฿5,999 × 1 ราคาหลัก ฿5,999

1
เข็มฉีด 30G × 1 ฿0
ผู้ให้บริการ หมอ: นพ.สมชาย

ค่าปรึกษาแพทย์

฿500 × 1

1
ยอดรวม:฿6,499.00
ค่าธรรมเนียม (3%):฿194.97
ยอดสุทธิ:฿6,693.97
ชำระเงิน

แต่ละแถว: ชื่อ + ราคา×จำนวน + ปุ่ม −/+/ลบ · รายการย่อยสินค้าสิ้นเปลืองสีเขียว ฿0 · แถบ "ผู้ให้บริการ" · แถวจากเคส (ม่วง) ปรับจำนวนไม่ได้ · ยอดรวม/ค่าธรรมเนียม/ยอดสุทธิ + ปุ่ม "ชำระเงิน"

6.1 ค่าธรรมเนียม (ไม่ใช่ VAT)

ดรอปดาวน์เหนือยอดรวม: ไม่คิดค่าธรรมเนียม (0%) / 3% / 5% / 7% / 10% / กำหนดเอง

กรณีตัวอย่าง

ลูกค้าจ่ายบัตรเครดิต คลินิกคิดค่าธรรมเนียมบัตร 3% — เลือก "3%" ก่อนกดชำระเงิน แถวสรุปยอดอัปเดตทันที "ยอดรวม: ฿5,999", "ค่าธรรมเนียม (3%): ฿180", "ยอดสุทธิ: ฿6,179" — ยอดที่ส่งไปเครื่องรูดบัตรเป็นยอดสุทธิรวมค่าธรรมเนียมแล้วเท่านั้น (sync ลงเซิร์ฟเวอร์ก่อนส่งเข้าเครื่องเสมอ)

6.2 แก้ไขราคาแมนนวลต่อรายการ

เฉพาะรายการบริการที่มาจากเคสเดิม (เคสรอปิด) — มีลิงก์ "แก้ราคา" ข้างราคา

กรณีตัวอย่าง

ลูกค้าประจำขอส่วนลดพิเศษเฉพาะรายการเดียว

  1. ดึงเคสรอปิดเข้าตะกร้า เจอรายการ "IV Drip Vitamin C" ราคา 2,500 บาท
  2. กด "แก้ราคา" → เปิด "แก้ไขราคาแมนนวล"
  3. กรอก "ราคาใหม่ (บาท)" = 2,000 และ "เหตุผล *" (บังคับ) — ไม่กรอกเหตุผลปุ่มบันทึกกดไม่ได้
  4. กด "บันทึกราคา" → ราคาในตะกร้าเปลี่ยนเป็น 2,000 แต่ "ราคาหลัก ฿2,500" ยังแสดงคู่กันเสมอ พร้อมป้าย "แก้ราคา" สีเหลืองอำพัน
  5. ระบบบันทึกประวัติ (ใครแก้/เมื่อไหร่/ราคาเดิม-ใหม่/เหตุผล) ไว้ตรวจสอบย้อนหลัง

6.3 แก้ไขยอดสุทธิทั้งบิล (เฉพาะแอดมิน)

กรณีตัวอย่าง

ปัดเศษยอดทั้งบิลให้ลูกค้าโดยไม่แก้ราคาทีละรายการ — บิลรวม 6,830 ลูกค้าขอปัดเป็น 6,800 เฉพาะแอดมินเห็นลิงก์ "แก้ไขยอดสุทธิ" ใต้ยอดสุทธิ (พนักงานขายทั่วไปไม่เห็น — ต้องเรียกแอดมินมาทำแทน) กรอกยอดใหม่+เหตุผล (บังคับ) → บันทึก → ยอดเดิมแสดงขีดฆ่าคู่กับยอดใหม่เสมอ

7. รูปแบบการชำระ (เต็ม/บางส่วน/มัดจำ/เข้ารับบริการก่อน)

กด "ชำระเงิน" → "รูปแบบการชำระ" (แสดงเฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ — ไม่เปิดจะบังคับชำระเต็มจำนวนเสมอ)

ตัวอย่างหน้าตา: ชิปเลือกรูปแบบการชำระ
ชำระเต็มจำนวน ชำระบางส่วน มัดจำ เข้ารับบริการก่อน

ชิปที่เลือกอยู่ = กรอบ+ตัวอักษรม่วง พื้นม่วงอ่อน

กรณีตัวอย่าง 1

ชำระเต็มจำนวน (ปกติที่สุด) — ลูกค้าจ่ายครบ กด "ชำระเต็มจำนวน" → เลือกช่องทาง → ยืนยัน → บิลปิดทันที ไม่มีอะไรค้าง

กรณีตัวอย่าง 2

ชำระบางส่วน (ลูกค้ามีเงินไม่พอวันนี้)

  1. ต้องการจ่ายก่อน 3,000 จาก 5,000 บาท กด "ชำระบางส่วน"
  2. กรอก "ยอดที่ชำระตอนนี้ *" = 3,000 (มีลิงก์ลัด "ครึ่งหนึ่ง")
  3. ระบบคำนวณ "คงเหลือไปเคสรอชำระ: ฿2,000" ให้อัตโนมัติ
  4. ยืนยัน → เคสไปอยู่แท็บ "เคสรอปิด" พร้อมป้าย "ชำระแล้ว ฿3,000 / รวม ฿5,000" รอเก็บส่วนที่เหลือครั้งหน้า
กรณีตัวอย่าง 3

เข้ารับบริการก่อน (ยังไม่เก็บเงินเลย) — กด "เข้ารับบริการก่อน" ไม่มีช่องเงินให้กรอกเลย ขึ้นข้อความ "เข้ารับบริการก่อน — ยังไม่ชำระเงิน / ยอดทั้งหมด ฿{X} จะถูกบันทึกเป็นยอดค้างชำระ..." ยืนยัน → ยอดทั้งบิลไปค้างที่ "เคสรอปิด" ทั้งจำนวน

กรณีตัวอย่าง 4

มัดจำ (ลูกค้าจองคิว/นัดล่วงหน้า)

  1. ลูกค้าจอง Laser 10,000 บาท ล่วงหน้า 1 สัปดาห์ ต้องการวางมัดจำก่อน กด "มัดจำ"
  2. เงื่อนไข: ต้องเป็นลูกค้าที่เป็นสมาชิกเท่านั้น — ใช้กับ Walk-in ไม่ได้
  3. กรอก "ยอดมัดจำที่รับตอนนี้ *" = 3,000 (ต้องน้อยกว่ายอดบิลเต็มเสมอ)
  4. ระบบขึ้น "มัดจำแล้ว ฿3,000 — เหลือเก็บภายหลัง ฿7,000" พร้อมหมายเหตุ "เงินมัดจำจะบันทึกเป็นเครดิตมัดจำผูก HN + ออกใบเสร็จมัดจำ · เคสติดสถานะ 'มัดจำแล้ว'"
  5. ยืนยัน → เคสไปอยู่แท็บ "เคสมัดจำ" (ไม่ใช่ "เคสรอปิด") พร้อมป้าย "มัดจำ ฿3,000"

8. เคสรอปิด / เคสมัดจำ (ติดตามลูกค้า)

8.1 เคสรอปิด — การ์ดแสดง "ยอดค้างชำระ" ตัวใหญ่ และป้าย "ค้าง {ชม./วัน}" (เหลือง ≥8 ชม., แดง ≥24 ชม.)

กรณีตัวอย่าง

ลูกค้าจ่ายบางส่วนไว้เมื่อวาน กลับมาจ่ายส่วนที่เหลือวันนี้ — เปิดแท็บ "เคสรอปิด" เห็นการ์ดป้าย "ค้าง 1 วัน" สีแดง พร้อม "ชำระแล้ว ฿3,000 / รวม ฿5,000" คลิกที่การ์ด → รายการทั้งหมดถูกดึงเข้าตะกร้าอัตโนมัติ ลูกค้าถูกผูกให้ทันที กด "ชำระเงิน" เลือกช่องทางสำหรับยอดคงเหลือ ฿2,000 → ปิดบิล (มีปุ่ม "ปิดเคส" ปิดสถานะได้แม้ยังมียอดค้าง และปุ่ม "ยกเลิก" เปิดหน้ายกเลิก/คืนเงิน)

8.2 เคสมัดจำ — การ์ดแสดงเบอร์โทรกดโทรออกได้ทันที และป้าย "มัดจำ {N} วัน" (เหลือง ≥30 วัน, แดง ≥90 วัน)

กรณีตัวอย่าง

ลูกค้าวางมัดจำไว้ 45 วันก่อนแล้วหายไป — เห็นการ์ดป้าย "มัดจำ 45 วัน" สีเหลือง พร้อมกล่องสรุป "มัดจำแล้ว ฿3,000 / ยอดเต็ม ฿10,000 / คงเหลือ ฿7,000" กดเบอร์โทรบนการ์ดโทรตามลูกค้าโดยตรง ลูกค้ายืนยันจะมา → กด "รับชำระต่อ" → ดึงเคสเข้าตะกร้าและไปแท็บ "เคสรอปิด" เพื่อเก็บเงินส่วนที่เหลือ

8.3 เข้า EMR ของเคสเองได้ — ฝ่ายขายเปิดเคสในหน้า EMR ได้เหมือนกัน เพื่อมอบหมายผู้ทำ (แถบ "ผู้ทำ" ในแท็บ "รายการ & บิล") หรือปิดเคส/ส่งไปชำระเงิน เอง

ตัวอย่างหน้าตา: แถบ "ผู้ทำ" (assign) + ปุ่มปิดเคส / ส่งไปชำระเงิน ในแท็บ "รายการ & บิล"

ฉีดฟิลเลอร์ใต้ตา

฿5,999

ยังไม่ระบุผู้ทำ
นพ.สมชาย — เลือกพยาบาล —
ปิดเคส ส่งไปชำระเงิน

แถบ "ผู้ทำ" เลือกได้ทุกบทบาท (ไม่ล็อกตาม role) · ยังไม่เลือก = เหลืองอำพัน "ยังไม่ระบุผู้ทำ" · ปิดเคส (เขียว) / ส่งไปชำระเงิน (ฟ้า → คิว POS)

9. ลูกค้า/แพ็กเกจ/โปรโมชัน/วงเงินใกล้หมด → ขายต่อ

9.1 กรองลูกค้าที่คอร์ส/วงเงินใกล้หมดจากเมนู "ลูกค้า"

เมนู ลูกค้า → "ตัวกรอง" มีเงื่อนไข "คอร์สหมดอายุใน N วัน" และ "วงเงิน VIP หมดอายุใน N วัน"

กรณีตัวอย่าง

เซลล์ทำรอบโทรตามลูกค้าที่คอร์สใกล้หมดอายุ — ตั้ง "คอร์สหมดอายุใน 30 วัน" รายชื่อลูกค้าที่คอร์สจะหมดอายุแสดงเป็นตาราง (เบอร์โทร/ยอดใช้จ่าย/มาล่าสุด) โทรตามทีละคนชวนมาใช้สิทธิ์ก่อนหมดอายุหรือต่อคอร์สใหม่ คลิกแถวลูกค้า → ปุ่ม "สร้างเคส" ท้ายหน้าต่างรายละเอียด → ไปหน้า POS พร้อมผูกลูกค้าคนนั้นไว้แล้ว

9.2 รายงานวงเงินใกล้หมดอายุ → ขายวงเงินต่อจากรายงานตรง

เมนู หลังบ้าน → วงเงินใกล้หมดอายุ — ตารางกรองตามช่วงวันหมดอายุ (7/15/30/60/90 วัน)

กรณีตัวอย่าง

ลูกค้ามีวงเงินคงเหลือใกล้หมดอายุใน 7 วัน — ตั้งตัวกรอง "ภายใน 7 วัน" เห็นแถวลูกค้าป้ายสถานะ "ใกล้หมดอายุ" สีแดง เหลือ 5 วัน มูลค่ารวม ฿4,200 คอลัมน์ "ดำเนินการ" มีปุ่ม "ขายวงเงิน" — กดแล้วพาไปหน้า POS พร้อมเปิดโหมดขายวงเงินให้เลย เลือกบริการที่ลูกค้าใช้วงเงินนี้จ่ายได้ต่อจากหน้า POS ตามปกติ

9.3 โปรโมชันอัตโนมัติที่หน้าชำระเงิน

กรณีตัวอย่าง

ลูกค้าตรงเงื่อนไขโปรโมชันพอดี ระบบเสนอส่วนลดให้เอง — ลูกค้า Gold tier ซื้อครบตามเงื่อนไข "ลด 10% ลูกค้า Gold ขึ้นไป" ระบบค้นหาโปรโมชันที่ใช้ได้ให้อัตโนมัติ แสดงในกล่อง พนักงานไม่ต้องกดใช้เอง ถ้ามีคูปองเฉพาะกิจกรอกที่ "มีรหัสคูปอง?" แล้วกด "ใช้คูปอง" หรือกด "สร้างคูปองส่วนลด" ให้ส่วนลดเฉพาะกิจครั้งเดียว เลือกใช้กับ "ทั้งบิล" หรือ "เฉพาะ" รายการเดียว

10. สรุปสิทธิ์ที่เกี่ยวกับฝ่ายขาย

การทำงานใครทำได้
เลือกลูกค้า/สแกนบัตร, เลือกบริการ/แพ็กเกจ, ใช้สิทธิ์แพ็กเกจ, รับชำระทุกช่องทาง, เลือกผู้ให้บริการต่อรายการพนักงานขายทุกคนที่มีสิทธิ์เข้าเมนู POS
ปรากฏในดรอปดาวน์ "ผู้ขาย (Sale)" ให้เลือกได้ต้องมีสิทธิ์ pos.sale.create (canSell เป็นจริง) เท่านั้น
กำหนดผู้ขายเป็นคนอื่นแบบมีผลทันที ไม่ต้องรออนุมัติrbac.permission.manage หรือ super_admin เท่านั้น — คนอื่นเลือกได้แต่ต้องรออนุมัติ
อนุมัติ/ไม่อนุมัติคำขอเปลี่ยนผู้ขายผู้อนุมัติตั้งค่าได้ (ค่าเริ่มต้น = super_admin เท่านั้น — เจ้าของคลินิกเพิ่มบทบาทอื่นได้) — คนแรกที่กดชนะ
แก้ไขราคาแมนนวลต่อรายการต้องระบุเหตุผลทุกครั้ง — สิทธิ์ตามที่ระบบตั้งไว้ ไม่ได้ล็อกเฉพาะแอดมิน
แก้ไขยอดสุทธิทั้งบิลแอดมิน (admin / super_admin) เท่านั้น
ออกบิลย้อนหลังสิทธิ์ pos.sale.backdate
เห็นเมนู "วงเงินใกล้หมดอายุ"สิทธิ์ wallet.report.view — ปกติเฉพาะแอดมิน แต่เปิดให้บทบาท sale เห็นได้เป็นกรณีพิเศษ
💳

แคชเชียร์

รับชำระเงิน ออกใบเสร็จ ปิดบิล

เมนูของคุณ

ขายหน้าร้าน (POS) — เคสรอปิด เคสมัดจำ พักบิล

งานหลัก 6 อย่าง: (1) เปิดเคสขายให้ลูกค้า (2) เก็บเงิน — เลือกรูปแบบชำระ+ช่องทาง+ยืนยัน (3) ดึงเคสที่ค้างชำระมาปิดบิล (4) ออกใบเสร็จ/พิมพ์ซ้ำ/ส่งใบเสร็จ (5) พักบิลเมื่อลูกค้ายังตัดสินใจไม่ได้ (6) ยกเลิก/คืนเงิน — ทุกการแก้ราคา/ยกเลิก/คืนเงินต้องกรอกเหตุผลทุกครั้ง ระบบบันทึกผู้ทำ+เวลา+ค่าก่อน-หลังไว้ตรวจสอบย้อนหลัง

สิ่งที่แคชเชียร์ทำไม่ได้โดยปริยายแก้ไขยอดสุทธิทั้งบิล, ยกเลิกบิลแบบไม่คืนเงิน, ออกบิลย้อนหลัง, กำหนดผู้ขายเป็นคนอื่นแบบมีผลทันที — ต้องมีสิทธิ์เพิ่มหรือให้แอดมินทำแทน (ดูหัวข้อ 14)

1. เปิดเคส + ขาย — ผูกลูกค้าให้ถูกคน

แท็บ "สร้างเคส + ขาย" → ช่อง "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *"

ตัวอย่างหน้าตา: ช่องค้นหาลูกค้า + ปุ่มสแกนบัตร / ถ่ายรูปบัตร + การ์ดผลค้นหา (ป้าย HN)
กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร) สแกนบัตรประชาชน ถ่ายรูป/อัปโหลดบัตร

สมหญิง ใจดี

HN: OPD-00123 081-234-5678

พิมพ์ ≥3 ตัวอักษร → เลือกผลค้นหา (ป้าย HN ม่วง) กลายเป็นการ์ดยืนยัน · ปุ่มสแกน (ฟ้า)/ถ่ายรูป (ม่วง) ค้นหา 3 ระดับอัตโนมัติ

1.1 ลูกค้าเก่า จำ HN/เบอร์ได้: พิมพ์ ≥3 ตัวอักษร (หน่วง 0.3 วิ) → เลือกชื่อ (คลิกหรือ ↑↓+Enter) → กลายเป็นการ์ดยืนยัน — เลือกผิดคนกดปุ่ม X (ทูลทิป "เปลี่ยนลูกค้า") ยกเลิกและค้นหาใหม่ได้ตราบใดที่ยังไม่กด "ชำระเงิน"

1.2 ลูกค้าเก่า แต่ไม่มี HN ในระบบ: ค้นหาแล้วเจอชื่อแต่ขึ้นเหลืองอำพัน "พบลูกค้าแต่ยังไม่มี HN — ใช้สแกนบัตร/ถ่ายรูปบัตรเพื่อสร้าง HN ใหม่" — เลือกจากผลค้นหาตรงๆ ไม่ได้ ต้องใช้ปุ่มสแกนบัตร (1.3-1.4)

1.3 ลูกค้าใหม่ มีบัตรประชาชนในมือ: กด "สแกนบัตรประชาชน" (เครื่องอ่านชิป USB หรือแอป Companion บนแท็บเล็ต)

กรณีตัวอย่าง

ค้นหาลูกค้าอัตโนมัติ 3 ระดับหลังอ่านบัตรสำเร็จ

  1. พบเลขบัตรตรงลูกค้าเดิม → ผูกให้ทันที ขึ้นเขียว "พบลูกค้าในระบบ" — จบ
  2. ไม่พบเลขบัตร แต่ชื่อตรงกับลูกค้าเดิม → กล่องเหลืองอำพันยืนยันทีละคนที่ชื่อใกล้เคียง ปุ่ม "ใช่คนนี้" (ผูกให้+บันทึกเลขบัตรอัตโนมัติ) หรือ "ไม่ใช่ — สร้าง HN ใหม่" — ต้องเช็คเบอร์โทร/รูปหน้าให้แน่ใจก่อนกด "ใช่คนนี้" เสมอ เพราะถ้าผูกผิดคน ประวัติ/สิทธิ์แพ็กเกจของอีกคนจะถูกใช้ผิด
  3. ไม่พบเลย → เปิดฟอร์มสร้างลูกค้าใหม่อัตโนมัติ (1.6) พร้อมข้อมูลจากบัตรกรอกให้แล้ว
  4. อ่านไม่สำเร็จ → ข้อความแดง + ปุ่ม "ลองสแกนใหม่" (เสียบบัตรไม่แน่น, เบราว์เซอร์ไม่รองรับ WebUSB ต้อง Chrome/Edge ไม่ใช่ Safari, หรือลืมเปิดแอป Companion)

1.4 ลูกค้าใหม่ ไม่มีเครื่องอ่านชิป หรือชาวต่างชาติ: กด "ถ่ายรูป/อัปโหลดบัตร" (ใช้ได้ทั้งบัตรไทยและพาสปอร์ต) — ระบบ OCR อ่านให้ ขึ้นกล่องม่วงให้ตรวจสอบ ถ้าความชัดต่ำมีคำเตือน+% ความมั่นใจ ตรวจทุกช่องก่อนกดยืนยันเสมอ โดยเฉพาะเลขบัตร/พาสปอร์ตกับวันเกิด (พาสปอร์ตดูจากแถบ MRZ 2 บรรทัดล่างสุด)

1.5 ตั้งค่าเครื่องอ่านบัตร Companion ครั้งแรกบนแท็บเล็ตเครื่องใหม่ทำครั้งเดียวต่อเครื่อง: ดาวน์โหลด+ติดตั้งแอป Companion → คัดลอก Device ID ไปกรอกในแอป (ตั้งชื่อเองได้เช่น pos-เคาน์เตอร์1) → กรอก API base + Token (ขอจากแอดมิน) + Device ID เดียวกัน → เสียบเครื่องอ่านบัตร USB-OTG → กด Start — ถ้าลืมทำขั้นนี้ กดสแกนจะค้างที่ "รอเสียบบัตรที่เครื่องอ่าน..." ให้ตรวจว่าเปิดแอปอยู่และ Device ID ตรงกันหรือยัง

1.6 ลงทะเบียนลูกค้าใหม่: ฟอร์มแบ่งแท็บ ข้อมูลทั่วไป/ส่วนตัว/ที่อยู่/การแพทย์/ฉุกเฉิน/การติดต่อ — บังคับกรอก ชื่อ/ชื่อเล่น/เบอร์โทร ที่เหลือกรอกทีหลังได้ HN ค่าเริ่มต้น Auto (ล็อกแก้ไม่ได้) สลับ Manual เฉพาะกรณีต้องใช้เลขที่กำหนดเอง กด "บันทึกข้อมูล" → ผูกเข้าเคสที่กำลังเปิดทันที

2. เลือกบริการ/แพ็กเกจใส่ตะกร้า

POS ขายบริการและคอร์ส/แพ็กเกจเท่านั้น — ไม่มีสินค้าปลีกวางขายตรง สินค้าที่เห็นในตะกร้ามาจากเคสเดิม หรือเป็นสินค้าสิ้นเปลืองที่ผูกมากับบริการอัตโนมัติเท่านั้น แตะการ์ด 1 ครั้ง = ใส่ตะกร้าทันที แตะซ้ำ = เพิ่มจำนวน

ตัวอย่างหน้าตา: การ์ดบริการ (มีบรรทัดสินค้าสิ้นเปลือง) + การ์ดแพ็กเกจ (ป้ายคอร์ส)

ฉีดฟิลเลอร์ 1cc

ฟิลเลอร์฿5,999
สินค้าสิ้นเปลือง 3 รายการ
คอร์ส

คอร์สโบท็อกซ์ 4 ครั้ง

คอร์ส/แพ็กเกจ฿12,000

แตะการ์ด 1 ครั้ง = เข้าตะกร้า · บรรทัด "สินค้าสิ้นเปลือง N รายการ" (เขียว) ดึงเข้าตะกร้าราคา ฿0 อัตโนมัติ

กรณีตัวอย่าง

ขายบริการที่มีสินค้าสิ้นเปลืองผูกอยู่ (เช่น ฉีดฟิลเลอร์ 1cc) — การ์ดบริการมีข้อความ "สินค้าสิ้นเปลือง {N} รายการ" ใต้ชื่อ แตะการ์ดบริการตามปกติ ระบบดึงสินค้าสิ้นเปลือง (เข็ม/ถุงมือ/สำลี) เข้าตะกร้าเป็นรายการย่อยอัตโนมัติ ราคา ฿0 (รายการต้นทุนสำหรับหักสต็อก ไม่ใช่ยอดขายที่คิดเงินลูกค้า) ไม่ต้องเพิ่มเองและไม่ต้องอธิบายลูกค้าว่าทำไมมีบรรทัดราคา 0 บาท

ถ้าสาขายังไม่มีบริการเลย ขึ้น "ยังไม่มีบริการในสาขานี้" — ต้องให้แอดมินตั้งค่าบริการให้สาขาก่อน ไม่ใช่ปัญหาที่แคชเชียร์แก้เองได้

3. ใช้สิทธิ์แพ็กเกจ (Redeem)

ตัวอย่างหน้าตา: การ์ดสิทธิ์แพ็กเกจ + ปุ่ม "ใช้สิทธิ์" (สิทธิ์แบบเลือกได้มีดรอปดาวน์)

คอร์สโบท็อกซ์

เหลือ 3 ครั้ง
ใช้สิทธิ์
Filler Programเลือกได้
— เลือกรายการที่ใช้ —

นับครั้งกด "ใช้สิทธิ์" ตรงๆ · นับหน่วย (cc/ml) กรอกจำนวนก่อน · ป้าย "เลือกได้" ต้องเลือกดรอปดาวน์ก่อนปุ่มถึงกดได้

กรณีตัวอย่าง

ลูกค้าซื้อคอร์สโบท็อกซ์ 4 ครั้งไว้ มาทำครั้งที่ 2

  1. หาแพ็กเกจของลูกค้าในกล่อง "สิทธิ์แพ็คเกจของลูกค้า" (แสดง "เหลือ {จำนวน}{หน่วย}")
  2. สิทธิ์นับครั้งกด "ใช้สิทธิ์" ตรงๆ (ครั้งละ 1) — นับหน่วย (cc/ml) กรอกจำนวนก่อนแล้วกด "ใช้สิทธิ์ {จำนวน} {หน่วย}"
  3. กล่องยืนยัน "เปิด OPD เพื่อตัดใช้สิทธิ์... (ไม่คิดเงิน) ใช่หรือไม่?" → ยืนยัน
  4. ระบบเปิดเคส OPD ฿0 ตัดสิทธิ์อัตโนมัติ ไม่มีขั้นตอนชำระเงินให้ทำ พาไปหน้า EMR ให้หมอบันทึกผลการรักษาต่อ — งานแคชเชียร์จบตรงนี้

แพ็กเกจแบบเลือกได้ (ป้าย "เลือกได้") ต้องเลือกจากดรอปดาวน์ก่อนปุ่มใช้สิทธิ์จะกดได้ — ต้องถามลูกค้าให้ชัดก่อนกด เพราะเลือกแล้วตัดสิทธิ์ทันที แก้ทีหลังต้องไปหน้ายกเลิก/คืนสิทธิ์แยก (13.2) — ถ้าลูกค้าไม่มีสิทธิ์เหลือเลยขึ้น "ลูกค้ารายนี้ไม่มีสิทธิ์คงเหลือ" ถ้าตรวจว่าเลือกลูกค้าถูก HN แล้วยังไม่เจอ ต้องแจ้งแอดมิน/หัวหน้าตรวจประวัติแพ็กเกจ

4. จัดการตะกร้า ("รายการขาย")

ปุ่ม −/+ ปรับจำนวน หรือถังขยะลบทั้งบรรทัด — ทำได้เฉพาะรายการที่เพิ่งเพิ่มในหน้านี้เอง รายการที่มาจากเคสรอปิดปรับ/ลบจากตะกร้าไม่ได้ (ปุ่มเทา ทูลทิป "ปรับจำนวนรายการจากเคสไม่ได้") ต้องแก้ที่หน้า EMR ของเคสนั้นแทน

ตัวอย่างหน้าตา: ตะกร้าสินค้า "รายการขาย" (แถว −/+/ลบ · สินค้าสิ้นเปลืองเขียว · เลือก Lot · ยอดสุทธิ · ชำระเงิน)
รายการขาย (1)

ฉีดฟิลเลอร์ 1cc

฿5,999 × 1

1
เข็ม 30G × 1 ฿0
ยอดสุทธิ:฿5,999.00
ชำระเงิน

รายการจากเคสรอปิด ปุ่ม −/+ เทากดไม่ได้ (แก้ที่ EMR) · สินค้าคุมล็อตมีช่อง "เลือก Lot" (ค่าเริ่มต้น FIFO)

แต่ละบรรทัดบริการมีแถบพับเก็บ "ผู้ให้บริการรายการนี้" เลือกหมอ(คนเดียว) + พยาบาล/ผู้ช่วย(หลายคน) — มีผลทันทีไม่ต้องรออนุมัติ ไม่เลือกใครแสดง "ตามทีมงานเคส"

"แก้ราคา" ใช้ได้เฉพาะบรรทัดจากเคสเดิม กรอก "ราคาใหม่ (บาท)" + "เหตุผล *" (บังคับ) — ราคาหลักเดิมยังโชว์คู่กันเสมอพร้อมป้ายเหลืองอำพัน ห้ามแก้ราคาโดยไม่กรอกเหตุผลที่ตรวจสอบได้จริง

สินค้าคุมล็อตมีช่อง "เลือก Lot:" ค่าเริ่มต้น "เลือกอัตโนมัติ (FIFO)" — ถ้าไม่มีล็อตพอสต็อกเลยขึ้นแดง "ไม่มีล็อตที่มีสต็อกเพียงพอ" เลือกไม่ได้ แจ้งคลังเติมสต็อกก่อน

5. ผู้ขาย (Sale) — ใครได้เครดิตยอดขายบิลนี้

ตัวอย่างหน้าตา: แถบเลือก "ผู้ขาย (Sale)" + สถานะรออนุมัติ (แคชเชียร์ทั่วไป)
ผู้ขาย (Sale) ค่าเริ่มต้น = ผู้เข้าสู่ระบบ
คุณ B (เซลล์)
⏳ ต้องรออนุมัติ — เคสจะเปิดในชื่อของคุณก่อน · ยอดขาย/ค่าคอมมิชชั่นจะย้ายให้เมื่ออนุมัติแล้ว

ผู้มีสิทธิ์เลือกคนอื่น = มีผลทันที ("✓ บันทึกผู้ขายเป็น…") · แคชเชียร์ทั่วไป = ส่งคำขอรออนุมัติ เก็บเงินต่อได้เลย

ค่าเริ่มต้นคือผู้ล็อกอินเอง — มีสิทธิ์กำหนดเอง (หัวหน้ากะ/ rbac.permission.manage): เลือกชื่อคนอื่น มีผลทันที ขึ้น "✓ บันทึกผู้ขายเป็น {ชื่อ} แล้ว" แคชเชียร์ทั่วไป (ไม่มีสิทธิ์): เลือกคนอื่น → เคสเปิดในชื่อแคชเชียร์ก่อน ระบบส่งคำขอเปลี่ยนผู้ขายรออนุมัติทันที ขึ้น "⏳ ต้องรออนุมัติ" ผู้มีสิทธิ์ไปกดที่เมนู หลังบ้าน → รวมการอนุมัติ → แท็บ "เปลี่ยนเซลล์" ระบบเช็คสถานะให้อัตโนมัติทุก 5 วินาที — แคชเชียร์ไม่ต้องรอหน้าจอค้าง เก็บเงิน/ปิดบิลต่อได้เลยระหว่างรออนุมัติ เลือกผิดแก้ได้โดยเปลี่ยนกลับมาเลือกตัวเองจะยกเลิกคำขอที่ส่งไปอัตโนมัติ

6. ชำระเงิน — รูปแบบการชำระ

กด "ชำระเงิน" เปิดหน้าต่าง 3 ขั้น: เลือกลูกค้า → รับชำระ → สำเร็จ — "รูปแบบการชำระ" แสดงเฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ ไม่เปิดจะบังคับชำระเต็มจำนวนเสมอ

ตัวอย่างหน้าตา: ชิปเลือกรูปแบบการชำระ (เต็ม/บางส่วน/มัดจำ/เข้ารับบริการก่อน)
ชำระเต็มจำนวน ชำระบางส่วน มัดจำ เข้ารับบริการก่อน

ชิปที่เลือก = กรอบ+ตัวอักษรม่วง · บางส่วนกรอก "ยอดที่ชำระตอนนี้" (ลัด "ครึ่งหนึ่ง") · มัดจำ = สมาชิกเท่านั้น

กรณีขั้นตอน
6.1 จ่ายครบตอนนี้เลยเลือก "ชำระเต็มจำนวน" → เลือกช่องทาง (7) → ยืนยัน → ปิดบิลทันที
6.2 มีเงินไม่พอ ขอจ่ายบางส่วนเลือก "ชำระบางส่วน" → กรอก "ยอดที่ชำระตอนนี้ *" (ปุ่มลัด "ครึ่งหนึ่ง") → ระบบคำนวณ "คงเหลือไปเคสรอชำระ" อัตโนมัติ → ยืนยัน → ส่วนที่เหลือไปแท็บ "เคสรอปิด" (10)
6.3 จองคิวล่วงหน้า วางมัดจำก่อนเลือก "มัดจำ" — ต้องเป็นลูกค้าสมาชิกเท่านั้น ใช้กับ Walk-in ไม่ได้ → กรอกยอดมัดจำ (ต้องน้อยกว่ายอดเต็ม) → ยืนยัน → เครดิตมัดจำผูก HN + ใบเสร็จมัดจำแยก + เคสไปแท็บ "เคสมัดจำ" (11)
6.4 หมอต้องตรวจก่อนถึงจะรู้ยอดแน่นอนเลือก "เข้ารับบริการก่อน" — ไม่มีช่องเงินให้กรอกเลย → ยืนยัน → ยอดทั้งหมดไปค้าง "เคสรอชำระ" ทันที

7. ช่องทางการชำระเงิน — รวม multi-tender

เลือกได้พร้อมกันหลายช่องทางในบิลเดียว (multi-tender) และแบ่งจ่ายหลายใบต่อช่องทางเดียวกันได้ด้วย

ตัวอย่างหน้าตา: ปุ่มช่องทางการชำระเงิน + ปุ่ม "ส่งไปที่เครื่อง" (Beam)
เงินสด เงินโอน บัตรเครดิต QR พร้อมเพย์ กระเป๋าเงินสมาชิก
ส่งไปที่เครื่อง

แตะได้หลายช่องพร้อมกัน (ปุ่มติดสว่าง = กรอบม่วง) · Beam ส่งทีละรายการ รอเครื่องยืนยันอัตโนมัติ

กรณีตัวอย่าง 7.1

รับหลายช่องทางในบิลเดียว: เงินสด 500 + QR ที่เหลือ (บิลยอด ฿1,200)

  1. แตะเลือกทั้ง "เงินสด" และ "QR พร้อมเพย์" พร้อมกัน (ปุ่มติดสว่างทั้งคู่)
  2. ช่องเงินสดกรอก "รับเงินสด" = 500
  3. ช่อง QR ระบบคำนวณส่วนที่เหลือให้เอง = 700 → กดสร้าง QR ให้ลูกค้าสแกน
  4. ปุ่มยืนยันกดไม่ได้จนกว่ายอดที่จัดสรรรวมทุกช่องทางจะครบยอดสุทธิพอดี — มีข้อความบอกว่าขาดอีกเท่าไหร่เสมอ
  5. ลูกค้าสแกนจ่ายสำเร็จ → ระบบตรวจสอบอัตโนมัติทุก 3 วิ → กดยืนยันปิดบิล

7.2 รับเงินสด เงินไม่พอ/ทอนเงิน: ช่อง "รับเงินสด" ปุ่มลัด "ใช้ยอดพอดี" — รับมากกว่ายอดคำนวณ "เงินทอน: ฿{X}" ให้อัตโนมัติ รับน้อยกว่ายอดขึ้น "เงินสดไม่พอ ขาดอีก ฿{X}" กดยืนยันไม่ได้จนครบ (หรือเพิ่มช่องทางอื่นมาช่วยแบบ multi-tender)

กรณีตัวอย่าง 7.3

จ่ายผ่านเครื่อง Beam ทีละรายการ — ป้องกันจ่ายซ้ำเวลาเครื่องรับเงินสำเร็จแต่บันทึกบิลไม่สำเร็จ

  1. กด "ส่งไปที่เครื่อง" → "กำลังส่งไปที่เครื่อง…" → "รอลูกค้าชำระที่เครื่อง Beam — ระบบยืนยันอัตโนมัติ" (มีปุ่ม "ยกเลิก")
  2. สำเร็จ → "...ชำระที่เครื่องสำเร็จ ✓" → บันทึกลงบิลอัตโนมัติ → "ชำระและบันทึกแล้ว ✓" → รายการถัดไปถึงจะกดได้

กรณีพบยาก แต่สำคัญที่สุด — เครื่องรับเงินสำเร็จแต่บันทึกลงบิลไม่สำเร็จ (เช่นเน็ตหลุดตอนเครื่องส่งผลกลับมา) ระบบเตือน "เงินเข้าที่เครื่องแล้ว แต่บันทึกลงบิลไม่สำเร็จ" — ห้ามให้ลูกค้าชำระซ้ำ — กด "บันทึกอีกครั้ง" เท่านั้น ห้ามส่งรายการเดิมเข้าเครื่องซ้ำเด็ดขาด เพราะเงินอาจถูกตัดจากบัตรลูกค้าไปแล้วจริง กด "บันทึกอีกครั้ง" ให้ระบบไปเช็คผลจากเครื่องแล้วบันทึกเข้าบิลใหม่แทน ถ้ายังไม่สำเร็จอีก แจ้งหัวหน้า/แอดมินตรวจสอบกับ Beam ก่อน อย่าลองส่งเองซ้ำหลายรอบ

ปิดหน้าต่างระหว่างชำระผ่านเครื่องยังไม่ครบ: ระบบเตือนก่อนเสมอว่ายอดที่ชำระผ่านเครื่องไม่หาย บิลจะค้างเป็น "เคสรอชำระ" สำหรับส่วนที่เหลือ — ปิดได้อย่างสบายใจ

7.4 QR พร้อมเพย์ (ไม่ผ่านเครื่อง Beam): ระบบสร้าง QR อัตโนมัติ ตรวจสอบทุก 3 วินาทีเอง ไม่ต้องกดยืนยันเอง สำเร็จ "ชำระเงินสำเร็จ ✓" ไปหน้าใบเสร็จอัตโนมัติ QR หมดอายุกด "สร้าง QR ใหม่"

7.5 แบ่งจ่ายหลายใบต่อช่องทางเดียวกัน (เช่นรูดบัตร 2 ใบคนละธนาคาร): ปุ่ม −/+ ป้าย "แบ่งจ่าย … ใบ" แต่ละใบเลือกธนาคาร+ผ่อนกี่เดือนแยกกันได้อิสระ

7.6 กระเป๋าเงินสมาชิกยอดไม่พอ: ต้องเลือกลูกค้าสมาชิกก่อน (ใช้กับ Walk-in ไม่ได้) ยอดไม่พอขึ้น "เครดิตไม่พอ — ขาดอีก ฿{X}" ต้องเลือกช่องทางอื่นมาช่วยจ่ายส่วนที่ขาด — บางระบบมีสวิตช์ "ใช้โบนัส" แยกหักเครดิตโบนัสกับเงินสดออกจากกัน

7.7 ทรูวอลเล็ท/คูปองนอกรายการมาตรฐาน: กด "เพิ่มช่องทางอื่น" กรอกประเภท/ชื่อ/จำนวนเงิน/เลขอ้างอิง — โหมดละเอียดแยกหลายบรรทัดพร้อมสลิป ใช้ร่วมกับกระเป๋าเงินสมาชิก/เครดิตลูกค้าไม่ได้ ต้องปิดโหมดละเอียดก่อนถ้าจะใช้ 2 ช่องทางนี้ร่วมกัน

7.8 เงินโอนเข้าบัญชีคลินิกตรง: ติ๊ก "รับโอนตรงเข้าบัญชีคลินิก (แนบสลิป)" แนบรูปสลิป — ไม่บังคับ ไม่บล็อกการปิดบิล แนะนำแนบตอนนั้นเลย

7.9 ใบเสร็จย้อนหลัง: เฉพาะสิทธิ์ pos.sale.backdate เห็นช่อง "วันที่ใบเสร็จ/ใบกำกับภาษี (ออกย้อนหลัง)" — ถ้าแคชเชียร์ทั่วไปเจอเคสแบบนี้ ให้ส่งต่อหัวหน้ากะ/แอดมินทำแทน

7.10 ปุ่มยืนยันชำระเงินกดไม่ได้: จะมีข้อความอธิบายเสมอว่าขาดอะไร อ่านข้อความใต้ปุ่มก่อนถามหัวหน้า มักแก้ได้เองโดยเติมยอดให้ครบตามที่ระบบบอก

8. พักบิล (Hold Bill)

กรณีตัวอย่าง

ลูกค้าลืมกระเป๋าเงินไว้ในรถ ขอออกไปหยิบก่อน — กดปุ่มโปร่ง "พักบิล (เก็บไว้ทำต่อทีหลัง)" กรอกหมายเหตุ (ไม่บังคับ) → "พักบิลไว้" ถ้ามีเงินที่กดชำระผ่านเครื่อง Beam ไปแล้วบางส่วนก่อนพัก เงินนั้นไม่หาย จะพักรออยู่กับบิลนี้

ลูกค้ากลับมาแล้ว ทำต่อ: แท็บ "พักบิล" → หาการ์ดบิล → กด "ทำต่อ" — ถ้าชำระครบแล้วกด "เสร็จสิ้น — ออกบิล" ถ้ายังมียอดค้างเลือกช่องทางจ่ายส่วนที่เหลือ หรือกด "รับส่วนที่เหลือเป็นเงินสด ฿{X} แล้วออกบิล" จบในคลิกเดียว

ลูกค้าพักบิลแล้วเปลี่ยนใจไม่เอาแล้ว: ในหน้า "ทำต่อ" กด "ยกเลิกรายการ (คืนเงิน)" — ถ้ามีเงินเข้าเครื่องไปแล้วบางส่วน ปุ่มเปลี่ยนเป็น "ยกเลิก/คืนเงิน (ผ่านหน้ายกเลิกเคส)" พาไปหน้ายกเลิก/คืนเงินเต็มรูปแบบแทน (หัวข้อ 12)

9. ใบเสร็จ (หลังชำระเงินสำเร็จ)

หน้า "ชำระเงินสำเร็จ" — สินค้า/เวชภัณฑ์ไม่โชว์ในใบสรุปที่ลูกค้าเห็น แต่ระบบบันทึกครบในหลังบ้าน

9.1 เครื่องพิมพ์เสีย/ไม่มีเครื่องพิมพ์: กด "พิมพ์ใบเสร็จ" ถ้าไม่มีเครื่องพิมพ์ thermal ระบบเปิดหน้าต่างพิมพ์ของเบราว์เซอร์ให้แทนอัตโนมัติ เลือกเครื่องพิมพ์อื่นได้

9.2 ลูกค้าขอใบเสร็จทาง LINE: กด "ส่งใบเสร็จ LINE" ต้องมีลูกค้าผูก LINE ไว้แล้ว ถ้าเป็น Walk-in ส่งไม่ได้ ต้องพิมพ์กระดาษแทน

9.3 ต้องส่งต่อหมอทันที: กด "เปิด OPD ต่อ" (เฉพาะบิลที่มีบริการ/แพ็กเกจ) พาไปหน้า EMR เปิดเคสต่อทันที

กรณีตัวอย่าง

9.4 ลูกค้าทำใบเสร็จหาย ขอพิมพ์ซ้ำ — ไม่ทำจากหน้าชำระเงินสำเร็จ ต้องไปหน้าค้นหาใบเสร็จ/รายงานแทน พิมพ์ซ้ำจะมีแถบ "สำเนา (COPY)" พร้อม "พิมพ์ซ้ำครั้งที่ {N}" กำกับเสมอ (ระบบทำให้อัตโนมัติ) เพื่อแยกจากใบต้นฉบับ

ตัวอย่างหน้าตา: ปุ่มหลังชำระสำเร็จ + ป้าย "สำเนา (COPY)" บนใบพิมพ์ซ้ำ
เปิด OPD ต่อ พิมพ์ใบเสร็จ
ใบเสร็จรับเงิน
AirClinic · HN 68-0042
สำเนา (COPY)
พิมพ์ซ้ำครั้งที่ 2

10. เคสรอปิด

รวมเคสที่ยังไม่ปิดบิล จากกรณี 6.2/6.4 หรือหมอเปิดเคสจาก EMR/การจองแล้วยังไม่มาชำระ

กรณีตัวอย่าง

ลูกค้าทำหัตถการเสร็จจากห้องหมอแล้ว เดินมาจ่ายเงินที่เคาน์เตอร์ — ค้นด้วยเลขเคสถ้ารู้ หรือดูจากการ์ด (หัวการ์ดคือชื่อบริการ/แพ็กเกจ ไม่ใช่เลขเคส) มี "ยอดค้างชำระ" ตัวใหญ่ คลิกที่การ์ด → รายการทั้งหมดถูกดึงเข้าตะกร้าอัตโนมัติ ลูกค้าถูกผูกให้ทันที กด "ชำระเงิน" ตามขั้นตอนปกติ — ป้ายค้าง: เหลือง ≥8 ชม., แดง ≥24 ชม. เคสค้างนานผิดปกติควรเช็คกับหัวหน้ากะ

เคสค้างนานเกินไป ลูกค้าไม่มาจ่ายและติดต่อไม่ได้: กด "ปิดเคส" บนการ์ด (ไม่ต้องเปิดเคสก็กดได้) — ปิดสถานะได้แม้ยังมียอดค้าง (มีกล่องยืนยันบอกยอดค้างก่อนปิด) ไม่ใช่วิธียกเลิกบิล — ถ้าจะยกเลิกบิลจริงต้องใช้ปุ่ม "ยกเลิก" (12.1) ไม่ใช่ปุ่ม "ปิดเคส"

ตัวอย่างหน้าตา: ป้ายอายุเคสรอปิด + ป้ายมัดจำ
ค้าง 8 ชม. ค้าง 26 ชม. มัดจำ 12 วัน

อายุเคสรอปิด: เหลือง ≥8 ชม. · แดง ≥24 ชม. — ป้ายมัดจำ (ฟ้า) นับวันตั้งแต่รับมัดจำ

11. เคสมัดจำ

รวมเฉพาะเคสที่รับมัดจำไว้แล้ว (จาก 6.3) และยังมียอดค้าง — การ์ดมีเบอร์โทรกดโทรออกได้ทันที ป้าย "มัดจำ {N} วัน" (เหลือง ≥30 วัน, แดง ≥90 วัน) เคสสีแดงควรโทรตามก่อนเพราะเสี่ยงลูกค้าลืม/เปลี่ยนใจ ลูกค้ามาแล้วพร้อมจ่ายส่วนที่เหลือ กด "รับชำระต่อ" → ดึงเคสเข้าตะกร้า ไปแท็บ "เคสรอปิด" อัตโนมัติ

12. ยกเลิก (Void) และคืนเงิน (Refund) — 3 สถานการณ์ต่างกันโดยสิ้นเชิง

กดปุ่ม "ยกเลิกรายการ" ที่หัวจอ → "ยกเลิกรายการ (Void)" — ค้นด้วยชื่อ/รหัสเคส/HN หรือช่วงวันที่ (เคสที่จบบริการแล้วจะไม่แสดงในหน้านี้) ก่อนตัดสินใจ ให้ถามตัวเองก่อน: "เคสนี้ชำระเงินไปแล้วหรือยัง"

ตัวอย่างหน้าตา: ปุ่มยกเลิก / คืนเงิน (3 สถานการณ์)
ยกเลิกบิล (Void) คืนเงิน (Refund) ยกเลิก (ไม่คืนเงิน)

"ยกเลิก (ไม่คืนเงิน)" เป็นสีเทา+ไอคอนกุญแจ (เฉพาะแอดมิน) แคชเชียร์ทั่วไปกดไม่ได้

กรณีตัวอย่าง 12.1

เคสยังไม่ชำระเงินเลย ลูกค้าเปลี่ยนใจไม่เอาแล้ว (= Void ธรรมดา)

  1. กรอก "เหตุผล *" (บังคับ)
  2. ถ้าเคสมีการตัดสิทธิ์แพ็กเกจไปแล้ว ติ๊ก "คืน Course Entitlement (ถ้ามี)" เพื่อคืนสิทธิ์ — ถ้าลืมติ๊ก ลูกค้าจะเสียสิทธิ์ไปฟรีๆ ต้องเช็คทุกครั้ง
  3. กด "ยกเลิกบิล" → ยืนยันอีกครั้ง (คำเตือน "การดำเนินการนี้ไม่สามารถยกเลิกได้") → "ยืนยัน ยกเลิกบิล"
  4. ถ้าเคสมีมัดจำค้างอยู่ ระบบคืนมัดจำเข้าเครดิตลูกค้าให้อัตโนมัติพร้อมกับยกเลิก
กรณีตัวอย่าง 12.2

เคสชำระเงินไปแล้ว ลูกค้าขอคืน (= Refund — มีเงินต้องคืนจริง)

  1. คืนเต็มบิล: ระบบเลือกทุกรายการให้ครบอัตโนมัติ รายการที่เป็นสินค้าต้องเลือกสภาพ: "ซีล/ไม่ได้เปิด — คืนสต็อก" / "เปิดแล้ว — ตัดทิ้ง (Waste)" / "เสียหาย — ตัดทิ้ง (Waste)" — เลือกให้ตรงความจริง อย่าเลือก "คืนสต็อก" ถ้าซองเปิดแล้ว
  2. เลือก "วิธีคืนเงิน": เงินสด/บัตรเครดิต-เดบิต/เครดิตในระบบ — ไม่จำเป็นต้องตรงกับช่องทางที่จ่ายมาตอนแรก
  3. ถ้ามีคอมมิชชั่นพนักงานผูกอยู่ ติ๊ก "ยกเลิก Commission ของพนักงาน" ถ้าต้องการ
  4. กรอกเหตุผล (บังคับ) → "ดำเนินการคืนเงิน" → ยืนยัน → "คืนเงินสำเร็จ" พร้อมสรุปยอดคืนและรายการที่คืนสต็อก/ตัดทิ้ง
  5. คืนบางส่วน: ปรับ "จำนวนที่คืน:" ต่อรายการด้วย −/+ ได้เอง ปุ่ม "เลือกทั้งหมด"/"ยกเลิกทั้งหมด" ช่วยเลือกเร็ว จากนั้นทำขั้นตอนเดิมแต่คิดเงินคืนเฉพาะรายการที่เลือก
กรณีตัวอย่าง 12.3 — เฉพาะแอดมิน

บิลชำระเงินแล้ว แต่คีย์ผิดคน (เงินถูกต้อง แต่ผูกกับลูกค้าผิดคน) — นี่ไม่ใช่การคืนเงิน วิธีแก้คือ "ยกเลิก (ไม่คืนเงิน)" ซึ่งแคชเชียร์ทั่วไปจะเห็นปุ่มนี้เป็นสีเทากดไม่ได้ พร้อมไอคอนกุญแจ (ทูลทิป "เฉพาะแอดมิน") ห้ามพยายามกดคืนเงินแล้วรับเงินใหม่เอง เพราะจะกลายเป็นคืนเงินจริงออกจากลิ้นชัก/บัญชีทั้งที่ไม่มีเงินไหลออกจริง ให้เรียกแอดมิน/หัวหน้ามาทำแทน:

  1. แอดมินกด "ยกเลิก (ไม่คืนเงิน)" → กล่องเตือนชัดเจน: "ไม่มีการคืนเงิน/เครดิต — ยอดเงินจะไม่ถูกคืนและไม่เข้าเครดิตลูกค้า / พนักงานต้องคีย์รับเงินใหม่ที่ POS ให้ถูกลูกค้า"
  2. กรอกเหตุผล + รหัสพนักงาน (PIN บังคับเสมอสำหรับบิลที่ชำระแล้ว) → ยืนยัน
  3. หลังจากนั้นแคชเชียร์ต้องเปิดเคสใหม่คีย์รับเงินให้ลูกค้าที่ถูกต้องแยกต่างหาก (เงินก้อนเดิมไม่ต้องรับซ้ำ) — ขั้นตอนนี้สับสนที่สุด ถ้าไม่แน่ใจให้ถามหัวหน้าก่อนเสมอ

ถ้าคลินิกตั้ง PIN ยืนยันไว้: ทั้งยกเลิกและคืนเงินจะมีช่อง "รหัส PIN ยืนยัน *" ต้องกรอกก่อนกดยืนยันเสมอ — เป็น PIN ของผู้มีสิทธิ์อนุมัติ ไม่ใช่ PIN ส่วนตัวของแคชเชียร์ทุกคน (ถ้าไม่มี PIN ต้องเรียกหัวหน้ามากรอกให้)

13. ตารางเทียบ 3 สถานการณ์ยกเลิก/คืนเงิน (กันสับสน)

สถานการณ์ชำระแล้วหรือยังใช้ปุ่ม/หัวข้อเงินไหลยังไงใครทำได้
ลูกค้าเปลี่ยนใจก่อนจ่ายยังไม่จ่าย"ยกเลิกบิล (Void)"ไม่มีเงินเข้า-ออกแคชเชียร์ทั่วไป
ลูกค้าจ่ายแล้วขอคืนของ/คืนเงินจ่ายแล้ว"คืนเงิน (Refund)"คืนเงินจริง (สด/บัตร/เครดิตระบบ)แคชเชียร์ทั่วไป (ต้อง PIN ถ้าตั้งไว้)
คีย์บิลผิดคน เงินถูกต้องจ่ายแล้ว"ยกเลิก (ไม่คืนเงิน)"ไม่มีเงินคืนออก ต้องคีย์รับใหม่แยกให้คนถูกเฉพาะแอดมิน + PIN บังคับ

14. สรุปสิทธิ์ตามบทบาท

การทำงานใครใช้ได้
ขายทั่วไป, เปิดเคส, เลือกลูกค้า/สแกนบัตร, ใช้สิทธิ์แพ็กเกจ, รับชำระทุกช่องทาง, ยกเลิกบิลที่ยังไม่ชำระ, คืนเงินบิลที่ชำระแล้วแคชเชียร์ทุกคนที่มีสิทธิ์เข้าเมนู POS
กำหนด "ผู้ขาย (Sale)" เป็นคนอื่นแบบมีผลทันทีrbac.permission.manage หรือ super_admin — คนอื่นเลือกได้แต่ต้องรออนุมัติ
แก้ไขยอดสุทธิทั้งบิลแอดมิน (admin/super_admin) เท่านั้น
ยกเลิก (ไม่คืนเงิน) สำหรับบิลชำระแล้วแอดมินเท่านั้น (แคชเชียร์เห็นปุ่มแต่กดไม่ได้)
ออกบิลย้อนหลังสิทธิ์ pos.sale.backdate เท่านั้น
แก้ไขราคาแมนนวลต่อรายการต้องระบุเหตุผลทุกครั้ง — ไม่จำกัดเฉพาะแอดมิน
อนุมัติคำขอเปลี่ยนผู้ขายSale Director / ผู้ดูแลระบบ ที่ "รวมการอนุมัติ" แท็บ "เปลี่ยนเซลล์"

15. ปัญหาที่พบบ่อย — ข้อความเห็นแล้วต้องทำอะไร

ข้อความที่เห็นสาเหตุทำอะไรต่อ
"กรอกอย่างน้อย 3 ตัวอักษรเพื่อค้นหา"พิมพ์ค้นหาลูกค้าน้อยเกินไปพิมพ์เพิ่ม
"พบลูกค้าแต่ยังไม่มี HN..."ลูกค้าเก่าไม่มี HN ในระบบใช้ปุ่มสแกน/ถ่ายรูปบัตรแทนการค้นหาตรงๆ
"รอเสียบบัตรที่เครื่องอ่าน..." ค้างไม่ขยับ (แท็บเล็ต)ยังไม่เปิดแอป Companion หรือ Device ID ไม่ตรงตรวจแอป Companion เปิดอยู่ไหม + Device ID ตรงกันไหม
"เบราว์เซอร์นี้อ่านบัตรไม่ได้"ใช้ Safari หรือเบราว์เซอร์ไม่รองรับ WebUSBเปลี่ยนไปใช้ Chrome/Edge
"ไม่มีล็อตที่มีสต็อกเพียงพอ"สินค้าหมดสต็อกทุกล็อตแจ้งคลังเติมสต็อก ขายต่อไม่ได้จนกว่าจะมี
"เงินสดไม่พอ ขาดอีก ฿{X}"รับเงินสดน้อยกว่ายอดที่จัดสรรรับเพิ่ม หรือลดยอดช่องทางนี้แล้วเพิ่มช่องทางอื่น
"เครดิตไม่พอ — ขาดอีก ฿{X}"กระเป๋าเงินสมาชิกไม่พอจ่ายเต็มเพิ่มช่องทางอื่นจ่ายส่วนที่ขาด
"เงินเข้าที่เครื่องแล้ว แต่บันทึกลงบิลไม่สำเร็จ"เครื่อง Beam รับเงินสำเร็จแต่บันทึกบิลพลาดห้ามให้ลูกค้าจ่ายซ้ำ กด "บันทึกอีกครั้ง" เท่านั้น
"QR หมดอายุแล้ว"ลูกค้าสแกนช้าเกินเวลาที่กำหนดกด "สร้าง QR ใหม่"
ปุ่มยกเลิก "ไม่คืนเงิน" เป็นสีเทากดไม่ได้แคชเชียร์ทั่วไปไม่มีสิทธิ์เรียกแอดมิน/หัวหน้ากะมาทำแทน
ปุ่ม −/+/ถังขยะ ในตะกร้าเป็นสีเทารายการนี้ดึงมาจากเคสเดิม แก้จากตะกร้าไม่ได้ให้หมอ/พยาบาลแก้ที่หน้า EMR ของเคสนั้นแทน
"ยังไม่มีบริการในสาขานี้"สาขานี้ยังไม่ได้ตั้งค่าบริการขายแจ้งแอดมินตั้งค่า ไม่ใช่ปัญหาที่แก้เองได้ที่ POS
🩺

หมอ

ตรวจรักษา บันทึกชาร์ต ปิดเคส

เมนูของคุณ

ประวัติการรักษา (EMR) ลูกค้า HR → ของฉัน
หลักการที่ต้องเข้าใจก่อนระบบตัดสิทธิ์จริงที่เซิร์ฟเวอร์เสมอ (ไม่ใช่ที่ปุ่มบนจอ) ปุ่ม/ฟอร์มส่วนใหญ่ใน EMR ไม่ได้ล็อกด้วย role ที่ล็อกอิน — เช่น พยาบาลก็เปิดช่องเขียน Doctor's Note ได้ (มี dropdown เลือกว่า "แพทย์ผู้บันทึก" คือใคร) เพราะหน้าจอเดียวใช้ร่วมกันทั้งทีม สิ่งที่ต่างจริงระหว่างหมอกับพยาบาล/ผู้ช่วย/BT คือ (1) เมนูที่เห็นในแถบข้าง (2) ค่าเริ่มต้นของ worklist (3) เจ้าของขั้นใน ClinicalStepper (4) ใครถูกเลือกเป็น "ผู้ทำ" จริงในทางปฏิบัติ

1.1 เมนูที่เห็น

บัญชี role doctor ได้ narrowed sidebar แบบ "doctor persona" เห็นเฉพาะ 3 กลุ่มเมนู: งานประจำวัน → ประวัติการรักษา (EMR), งานประจำวัน → ลูกค้า (หมอเห็นแต่ BT ไม่เห็น — "BT เตรียมของ/ช่วยงาน ไม่ได้เป็นเจ้าของชาร์ต"), หลังบ้าน → HR-ของฉัน (กลุ่ม "ของฉัน" เท่านั้น)

กรณีตัวอย่าง

หมอที่ login ด้วย role doctor — แถบเมนูซ้ายไม่มี "คลัง", "บัญชี", "ตั้งค่า" ให้กด (แม้พิมพ์ URL ตรงเข้าไปเซิร์ฟเวอร์ก็ปฏิเสธ) เห็นแค่ EMR + ลูกค้า + HR-ของฉัน — ถ้าบัญชีถูกตั้งเป็น admin/super_admin แทน จะเห็นเมนูเต็มไม่ถูกจำกัด

1.2 Worklist — เคสของฉัน / ทั้งหมด

จอกว้าง (desktop/iPad แนวนอน): การ์ด "รายชื่อคนไข้" 2 คอลัมน์ มีปุ่ม "เฉพาะเคสของฉัน" (toggle) — ถ้าคลินิกตั้งนโยบาย "own" ไว้ ปุ่มจะกลายเป็นชิปนิ่งกดไม่ได้ จอแคบ (มือถือ): role doctor อยู่ใน CLINICAL_ROLE_KEYS จึงเปิดมาที่แท็บ "เคสของฉัน" เป็นค่าเริ่มต้นเสมอ

ตัวอย่างหน้าตา: แถบสลับ "เคสของฉัน / ทั้งหมด" + การ์ดเคส (Worklist)
เคสของฉัน 3 ทั้งหมด 12
10:30 กำลังให้บริการ ค้างชำระ ฿6,499

ฉีดฟิลเลอร์ใต้ตา + อีก 1 รายการ

ห้อง 2 · คุณ: หมอ เปิดเคส

แท็บที่เลือก = ม่วงทึบ · การ์ดมีแถบสีซ้ายตามสถานะ · ป้าย "คุณ: หมอ" = บทบาทของคุณในเคสนี้

กรณีตัวอย่าง

หมอเปิดแอปตอนเช้าบนมือถือ — จอเปิดมาที่แท็บ "เคสของฉัน (N)" ทันที เห็นเฉพาะเคสที่ตัวเองอยู่ในทีมผู้ทำ ถ้าวันนี้ยังไม่มีเคสมอบหมาย จอไม่ใช่หน้าว่างเปล่า แต่มีข้อความ "วันนี้ยังไม่มีเคสที่มอบหมายให้คุณ" พร้อมปุ่ม "ดูเคสทั้งหมด (N)" ให้สลับไปดูคิวรวมของคลินิกได้ทันที

1.3 เปิดเคส — ส่วนหัวคนไข้ + สัญญาณชีพ + แพ้ยา

เลือกคนไข้เห็นการ์ดส่วนหัว: ชื่อ+ชื่อเล่น+tier+HN, เพศ/อายุ/กรุ๊ปเลือด/มาล่าสุด, ป้ายแพ้ยาสีแดง (ถ้ามี), แถบสัญญาณชีพล่าสุด และปุ่ม "เปิด OPD"

ตัวอย่างหน้าตา: การ์ดส่วนหัวคนไข้ใน EMR (PatientHeaderCard)
สมหญิง ใจดี (น้องหญิง)
HN 68-0042
Gold แพ้ Penicillin แพ้ Aspirin
เพศ/อายุ
หญิง · 34
กรุ๊ปเลือด
O
สัญญาณชีพล่าสุด
ความดัน120/80 ชีพจร72 อุณหภูมิ36.7
เปิด OPD

ป้ายแพ้ยาสีแดงเด่นบนหัวการ์ด (เห็นก่อนกดเข้าเคส) · ทั้ง BT และหมอเห็นการ์ดนี้เหมือนกัน

กรณีตัวอย่าง

หมอเปิดคนไข้ที่มีประวัติแพ้ยา — เห็นป้ายสีแดงเตือนแพ้ยาโชว์บนหัวการ์ดทันทีก่อนกดเข้าเคสด้วยซ้ำ ไม่ต้องเปิดแท็บ "ข้อมูลคนไข้" ไปหา ถ้ายังไม่เคยวัดสัญญาณชีพเลย แถบขึ้น "ยังไม่มีบันทึกสัญญาณชีพ — เปิด OPD เพื่อบันทึก" แทนช่องว่าง

1.4 หน้ารายละเอียดเคส — แท็บ "ชาร์ต & บันทึก"

ตัวอย่างหน้าตา: แท็บ 4 แท็บของหน้าเคส EMR
ชาร์ต & บันทึก รายการ & บิล ข้อมูลคนไข้ ยินยอม

แท็บที่เปิดอยู่ = ตัวอักษรม่วง + ขีดใต้ม่วง

สัญญาณชีพ

การ์ดแรก 6 ช่อง (น้ำหนัก/ส่วนสูง/BMI อัตโนมัติ/ชีพจร/ความดัน sys-dia/อุณหภูมิ) ปุ่ม "อัปเดต" ใช้ได้ตราบเคสยังไม่ปิด

ตัวอย่างหน้าตา: การ์ดสัญญาณชีพ (6 ช่อง + BMI อัตโนมัติ)
สัญญาณชีพ อัปเดต
น้ำหนัก
58 kg
ส่วนสูง
162 cm
BMI
22.1
ชีพจร
72 /min
ความดัน
120/80 mmHg
อุณหภูมิ
36.7 °C

BMI (ช่องม่วง) คำนวณอัตโนมัติจากน้ำหนัก/ส่วนสูง ไม่ต้องคีย์เอง

กรณีตัวอย่าง

หมอเห็นว่าพยาบาลบันทึกความดันไม่ครบ (มีแค่ sys ไม่มี dia) — กด "อัปเดต" แก้เพิ่ม dia แล้วกด "บันทึก" BMI คำนวณใหม่อัตโนมัติจากน้ำหนัก/ส่วนสูงที่กรอกไว้ ไม่ต้องคีย์เอง

Chart หลายชั้น + ใช้รูปจริง + วาดเต็มจอ

เคสที่มีหลายหมอร่วมทำจะมี "ชั้นชาร์ต (ตามหมอ)" แยกคนละชั้น ปุ่ม "เพิ่ม chart" เปิดชั้นใหม่ของหมออีกคน ไอคอนดินสอสลับเจ้าของชาร์ต ปุ่ม "ใช้รูป"/"เปลี่ยนรูป" ใช้รูปคนไข้จริงแทนเฟซชาร์ตเทมเพลต ปุ่ม "วาดเต็มจอ (iPad)" เปิดหน้าวาดแยก

ตัวอย่างหน้าตา: พื้นที่ Chart/วาด (facechart) + ปุ่มเพิ่ม chart / วาดเต็มจอ / ชั้นตามหมอ
ชาร์ตหลัก · นพ.สมชาย นพ.สุดา เพิ่ม chart
ชาร์ตหลัก
ใช้รูป วาดเต็มจอ (iPad)

แต่ละหมอมีชั้นชาร์ตแยก (ป้าย "ชาร์ตหลัก" = ชั้นฐาน) · จุดแดง = ตำแหน่งฉีดที่วาดไว้ · "วาดเต็มจอ" เปิดหน้าวาดแยกสำหรับ iPad

กรณีตัวอย่าง

เคส Botox ที่หมอ A ทำหน้าผาก หมอ B ทำใต้ตาในวันเดียวกัน — หมอ A เข้าเคส กด "เพิ่ม chart" เปิดชั้นใหม่ให้หมอ B แล้วส่ง iPad ต่อให้หมอ B วาดจุดฉีดของตัวเองในชั้นที่แยกกัน ป้าย "ชาร์ตหลัก" ยังอยู่ที่ชั้นฐานของหมอ A ย้อนดูภายหลังเลือกดูทีละชั้นได้ว่าใครฉีดจุดไหน

Doctor's Note — พิมพ์/เขียนมือ/ขยาย

การ์ดโน้ตที่บันทึกแล้ว (แก้ผ่านไอคอนดินสอ) + ช่องเขียนใหม่ด้านล่างเสมอ สวิตช์ พิมพ์/เขียนมือ สลับโหมดบนกระดาษเดียวกัน (ซ้อนกันได้ทั้งพิมพ์และลายมือ), ปุ่ม "ขยาย" เปิดหน้าต่างลอย, dropdown "แพทย์ผู้บันทึก"

ตัวอย่างหน้าตา: กล่องเขียน Doctor's Note (สวิตช์ พิมพ์/เขียนมือ + ขยาย + แพทย์ผู้บันทึก)
พิมพ์ เขียนมือ
ขยาย
พิมพ์หรือเขียนโน้ตของแพทย์บนกระดาษนี้…
แพทย์ผู้บันทึก: นพ.สมชาย บันทึกโน้ต

พิมพ์/เขียนมือ ซ้อนบนกระดาษใบเดียวกันได้ · dropdown "แพทย์ผู้บันทึก" ผูกชื่อหมอกับโน้ตเสมอ

กรณีตัวอย่าง

หมอพิมพ์สรุปอาการเบื้องต้นในโหมดพิมพ์ แล้วกดสวิตช์ไปเขียนมือเพื่อวาดแผนผังตำแหน่งจุดฉีดทับข้อความเดิม (ตัวอักษรกับลายเส้นซ้อนกันบนกระดาษใบเดียว) จอมือถือแคบไปสำหรับวาดละเอียด กด "ขยาย" เปิดเป็นหน้าต่างลอยเต็มจอ วาดเสร็จกด "บันทึกโน้ต" ระบบผูกชื่อหมอที่เลือกใน dropdown ติดไปกับโน้ตนั้นเสมอ

ICD-10

โหมดแก้ไข: กรอกรหัส (เช่น L70.0) + คำอธิบายต่อแถว ปุ่ม "เพิ่มรหัส" บันทึกรวมกับ diagnosis/notes

กรณีตัวอย่าง

หมอวินิจฉัยสิวอักเสบ กด "แก้ไขเคส" พิมพ์รหัส L70.0 + คำอธิบาย "Acne vulgaris" กด "เพิ่มรหัส" อีกครั้งถ้ามีวินิจฉัยร่วม แล้วกด "บันทึก" — ถ้าไม่กรอกเลย โหมดอ่านอย่างเดียวโชว์ "ไม่มีรหัส ICD-10" แทนช่องว่าง

ยา/เวชภัณฑ์ที่ใช้ (multi-lot FEFO)

ปุ่ม "+ เพิ่ม" เปิด modal "เพิ่มสินค้าเข้าเคส" ค้นหาชื่อ/รหัส หมวดหมู่ (แนะนำ/วัสดุสิ้นเปลือง/ทั้งหมด/รายหมวด) การ์ดสินค้ามีปุ่ม +/− สินค้าแบ่งล็อตมีช่อง "เลือก Lot" ค่าเริ่มต้นล็อตใกล้หมดอายุสุด (ป้าย "Auto FEFO")

ตัวอย่างหน้าตา: modal "เพิ่มสินค้าเข้าเคส" — แถวยา/เวชภัณฑ์ +/− จำนวน + เลือก Lot (Auto FEFO)
เพิ่มสินค้าเข้าเคส
ค้นหาชื่อ / รหัสสินค้า…
แนะนำ วัสดุสิ้นเปลือง ทั้งหมด

Botox Allergan 100u

คงเหลือ 340 unit

100
เลือก Vial (จะหัก 100 unit จาก vial นี้) Auto FEFO
Lot A2409 · หมดอายุ 12/2569 · เหลือ 200u
เพิ่มสินค้า 1 รายการ

งานหลักของ BT: ปรับ +/− จำนวนตามที่หมอสั่ง · "Auto FEFO" (badge เขียว) เลือก vial ใกล้หมดอายุสุดให้เอง · ราคาต้นทุนซ่อนถ้าไม่มีสิทธิ์

กรณีตัวอย่าง

หมอสั่งใช้ Botox 2 vial ในเคสเดียว — เปิด modal ค้นหา "botox" เพิ่มจำนวนเป็น 100 unit ระบบเลือก vial ใกล้หมดอายุสุดให้อัตโนมัติ ถ้า vial นั้นเหลือไม่พอ (เหลือ 60 unit) ระบบแจ้ง "lot นี้เหลือ 60 — ระบบจะดึงส่วนที่เหลือจาก lot ถัดไปตาม FEFO อัตโนมัติ" ไม่ต้องคีย์แยก 2 แถวเอง — ถ้าสต็อกรวมไม่พอเลย ข้อความเปลี่ยนเป็นแดง "สต็อกรวมทั้งหมดมีแค่ X — ไม่พอสำหรับ 100" ต้องยืนยัน dialog "สต็อกไม่พอ — ขายก่อนรับเข้า" ก่อนตัดสต็อกติดลบชั่วคราว

ราคาต่อหน่วย (cost) ของสินค้าแบ่งย่อยจะไม่โชว์เว้นแต่บัญชีมีสิทธิ์ inventory.cost.view (ปกติเฉพาะแอดมิน) — หมอทั่วไปเห็นแค่หน่วยที่ใช้ ไม่เห็นตัวเลขต้นทุน

Before/After

กรอบ ก่อนทำ/หลังทำ พร้อมวันที่ถ่าย ปุ่ม "ดูรูปเต็ม/เทียบ" เปิด side-by-side พร้อม drag slider แยก session (dropdown "ครั้งที่ N") เลือก layout ได้ 4 แบบ

กรณีตัวอย่าง

หมอนัดคนไข้กลับมาดูผล Filler เดือนถัดไป — เปิดเครื่องมือ Before/After เลือก dropdown session "— สร้างรายการใหม่ —" (ไม่ปนกับรูปครั้งก่อน) เลือก layout "แยกซ้าย-ขวา" ถ่ายรูป After ใหม่เทียบกับ Before เดิม แล้วกด "ดูรูปเต็ม/เทียบ" เลื่อน slider โชว์คนไข้ดูผลต่างแบบ interactive ได้ทันทีในห้องตรวจ

ClinicalStepper — ขั้นตอนหัตถการ

4 ขั้นต่อ session: ตรวจ/ปรึกษา (เจ้าของ: แพทย์) → เตรียมหัตถการ (BT) → ทำหัตถการ (BT+แพทย์) → จบหัตถการ (BT) ป้ายเจ้าของขั้นแสดงใต้ชื่อขั้นเสมอ ปุ่ม "เริ่ม session" เริ่มรอบใหม่

กรณีตัวอย่าง

คนไข้เข้ามาปรึกษาปัญหาผิว — หมอกด "เริ่ม session" เปิด Session #1 แล้วกด "ทำขั้นนี้" ที่ขั้น "ตรวจ/ปรึกษา" ทันทีที่ตรวจเสร็จ ปุ่มขั้นถัดไป "เตรียมหัตถการ" จะกดได้ (ระบบล็อกไว้ก่อนหน้านี้ — ปุ่มมี title="ทำขั้นก่อนหน้าให้เสร็จก่อน" ถ้ายังไม่เสร็จ) หมอส่งต่อให้ BT ทำขั้น 2-3-4 ต่อ ไม่ต้องกดเองทุกขั้น

ลายเซ็นแพทย์

แถบ "ข้อมูลแพทย์ & ลายเซ็น" แสดง 4 แถว (แพทย์/License No./Specialty/Position) อ่านจากข้อมูล HR จริงของหมอเจ้าของชาร์ตชั้นที่กำลังเปิดอยู่ — มีตรรกะกันไม่ให้ดึงพนักงานที่ไม่ใช่หมอมาแสดงเป็น "แพทย์" ฝั่งขวาช่องเซ็นชื่อ + ปุ่ม "บันทึกลายเซ็น"

ตัวอย่างหน้าตา: การ์ด "ข้อมูลแพทย์ & ลายเซ็น" + ช่องเซ็น + ปุ่มบันทึกลายเซ็น
ข้อมูลแพทย์ & ลายเซ็น (Doctor's Information)
แพทย์นพ.สมชาย ใจดี
License No.ว.12345
Specialtyผิวหนัง
Positionแพทย์ประจำ
ลายเซ็น
บันทึกลายเซ็น

4 แถวข้อมูลดึงจาก HR ของหมอเจ้าของชาร์ต (ว่าง = "—") · ปุ่มบันทึกลายเซ็น = ม่วง (violet-600) · เซ็นซ้ำเปลี่ยนเป็น "เซ็นใหม่ (แทนที่)"

กรณีตัวอย่าง

หมอเปิดชั้นชาร์ตของตัวเอง เห็นข้อมูล License No./Specialty/Position ดึงมาจาก HR อัตโนมัติ (ถ้ายังไม่กรอกจะโชว์ "—") เซ็นชื่อในช่องขวา กด "บันทึกลายเซ็น" — ครั้งถัดไปถ้าต้องเซ็นซ้ำ ปุ่มเปลี่ยนเป็น "เซ็นใหม่ (แทนที่ลายเซ็นเดิม)" กันเซ็นทับโดยไม่รู้ตัว

1.5 แท็บ "รายการ & บิล" — มอบหมายผู้ทำ

แต่ละแถวบริการมีแถบ "ผู้ทำ" เลือกหมอ/พยาบาล/ผู้ช่วยที่ทำบริการนั้นจริง ผ่าน dropdown เดียวกันทุกบทบาท (ไม่ล็อกว่าใครกดได้เฉพาะบทบาทตัวเอง) ยังไม่เลือกแถบเปลี่ยนสีเหลืองอำพันพร้อมป้าย "ยังไม่ระบุผู้ทำ"

กรณีตัวอย่าง

เคสมีบริการ "ฉีดโบท็อกซ์" (หมอทำเอง) และ "ทำความสะอาดผิวหลังฉีด" (มอบพยาบาลทำ) — หมอเปิดแท็บรายการ&บิล เลือกตัวเองในแถบผู้ทำแถวแรก แล้วเลือกชื่อพยาบาลในแถวที่สอง หมอไม่จำเป็นต้องเป็นผู้ทำเองทุกแถว มอบหมายพยาบาล/ผู้ช่วยแทนได้ตรงนี้ เคสที่ปิดแล้วแถบผู้ทำเปลี่ยนเป็นอ่านอย่างเดียว (แก้ไขย้อนหลังได้เฉพาะแอดมิน)

ถ้าเคสมีผู้ทำต่างกันรายบริการ จะมีป้าย "ผู้ทำต่างกันรายบริการ" พร้อมปุ่ม "แยกรายบริการ" สลับมุมมองดูทีละคน กล่อง "ยอดรวมเคสนี้" (พื้นม่วง) เป็น price-gated — เฉพาะฝ่ายขาย/แอดมินเห็นตัวเลข ฿ หมอไม่เห็นยอดเงินตรงนี้ (โชว์เป็น "—")

1.6 แท็บ "ข้อมูลคนไข้" — ใช้สิทธิ์/โอนสิทธิ์แพ็กเกจ

กรณีตัวอย่าง

คนไข้ซื้อคอร์สโบท็อกซ์ 3 ครั้งไว้ล่วงหน้า วันนี้มาใช้ครั้งที่ 2 — หมอเปิดแท็บข้อมูลคนไข้ เห็นคอร์สค้าง 2 ครั้ง กด "ใช้สิทธิ์" ระบบตัด 1 ครั้งทันทีแบบ ฿0 (toast แจ้งพร้อมปุ่ม "ยกเลิก" ค้างอยู่ 15 วินาทีเผื่อกดผิด) ไม่มีการเก็บเงินซ้ำในเคสนี้ — ถ้าคนไข้ต้องการยกสิทธิ์ที่เหลือให้ญาติ (HN อื่น) หมอกด "โอนสิท" แทน

1.7 แท็บ "ยินยอม" (Consent)

3 ส่วน: เซ็นแล้วในเคสนี้ (ดู PDF/รูปเอกสารต้นฉบับ), เลือกแม่แบบหนังสือยินยอม (แยกหมวดทั่วไป/หัตถการ/ยาชา/ถ่ายภาพ ปุ่ม "เลือก & เซ็น"), อัปโหลดฟอร์มที่เซ็นแล้ว (JPG/PDF)

กรณีตัวอย่าง

หัตถการที่ต้องใช้ยาชาเฉพาะที่ — หมออธิบายความเสี่ยงให้ฟัง แล้วกด "เลือก & เซ็น" บนเทมเพลตหมวด "ยาชา" ก่อนลงมือ ระบบเปิดตัวอย่าง PDF ให้ดูเนื้อหาเต็มก่อนเซ็นบน iPad — ถ้าเทมเพลตยังไม่พร้อม แท็บนี้ไม่พังแต่โชว์ว่างแทน และยังใช้ทางอัปโหลดฟอร์มกระดาษที่เซ็นไว้ก่อนหน้าได้

1.8 ปิดเคส / ส่งไปชำระเงิน / เพิ่มย้อนหลัง

ปุ่มมุมขวาแถวแรก: แก้ไขเคส/เสร็จสิ้น, ปิดเคส (เขียว — ปิดเคสได้แม้มียอดค้างชำระ ระบบเตือนก่อน ยอดค้างไปอยู่รายงานลูกหนี้ AR ไม่หาย — ใช้เมื่อไม่มียอดต้องเก็บเพิ่ม หรือยอมปิดทั้งที่ค้าง), ส่งไปชำระเงิน (ฟ้า — มียอดค้าง ส่งไปคิว POS), เพิ่มย้อนหลัง (เฉพาะเคสปิดแล้ว)

ตัวอย่างหน้าตา: ปุ่มปิดเคส / ส่งไปชำระเงิน / เพิ่มย้อนหลัง
ปิดเคส ส่งไปชำระเงิน เพิ่มย้อนหลัง

ปิดเคส = เขียว · ส่งไปชำระเงิน = ฟ้า (ไปคิว POS) · เพิ่มย้อนหลัง = เฉพาะเคสที่ปิดแล้ว

กรณีตัวอย่าง — ปิดเคสตรง

คนไข้จ่ายเงินสดครบก่อนเข้าห้องตรวจ (ใช้บริการฟรีจากคอร์ส ไม่มียอดค้าง) — หมอตรวจเสร็จ ทำ ClinicalStepper ครบ 4 ขั้น กด "ปิดเคส" จบตรงนั้นไม่ต้องผ่าน POS อีกรอบ

กรณีตัวอย่าง — ส่งไปชำระ

ระหว่างตรวจหมอเพิ่มบริการเสริมที่คนไข้ยังไม่ได้จ่าย — กด "ส่งไปชำระเงิน" เคสไปเข้าคิว "เคสรอปิด" ที่ POS ให้แคชเชียร์เก็บเงิน ปุ่มเปลี่ยนเป็น "ย้อนกลับไปแก้ไข" ถ้ายังไม่มีการชำระจริงและหมอนึกได้ว่าลืมใส่รายการ

กรณีตัวอย่าง — เพิ่มย้อนหลัง

เคสปิดไปแล้วแต่หมอนึกได้ว่าลืมคีย์ Botox 50u ที่ฉีดจริง — กด "เพิ่มย้อนหลัง" เลือกประเภท "บริการ"/"สินค้า" ทีละ 1 รายการ สวิตช์ "คิดเงิน" (ต่อยอดเข้าใบเสร็จเดิม+คำนวณกำไรใหม่) หรือ "แถมฟรี" (บันทึกใน visit อย่างเดียว) กรอกช่อง "เหตุผล" บังคับก่อนกด "บันทึก" — ถ้าเลือก "สินค้า" ระบบเตือนว่า Stock จะถูกตัดทันที

1.9-1.10 เมนูลูกค้า + HR-ของฉัน

หมอมีสิทธิ์เข้าเมนู "ลูกค้า" นอกเหนือจาก EMR — ดูประวัติ/ข้อมูลคนไข้แบบไม่ผูกกับเคสใดเคสหนึ่งได้ (เช่น ค้นหาคนไข้เก่าก่อนนัดหมายใหม่) พยาบาล/ผู้ช่วย/BT ไม่มีเมนูนี้ HR-ของฉัน เหมือนกันทุก role: ข้อมูลส่วนตัว, ตารางงานของฉัน, ลงเวลา, ลาของฉัน, ขอ OT, สลิปเงินเดือนของฉัน, ใบอนุญาตของฉัน — หมอเห็นเฉพาะกลุ่ม "ของฉัน" ไม่เห็นกลุ่ม "จัดการบุคคล"

กรณีตัวอย่าง

หมอที่มีใบประกอบวิชาชีพใกล้หมดอายุ เข้าเมนู HR-ของฉัน → "ใบอนุญาตของฉัน" ดูวันหมดอายุใบอนุญาตของตัวเอง — ไม่เห็นใบอนุญาตของหมอคนอื่นในคลินิก (อยู่ในกลุ่ม "จัดการบุคคล" ที่เฉพาะ HR/แอดมินเข้าถึง)

💉

พยาบาล / ผู้ช่วย / BT

เตรียม-ช่วย-ปิดหัตถการ ตามขั้นตอนคลินิก

เมนูของคุณ

ประวัติการรักษา (EMR) HR → ของฉัน

โครงจอเดียวกับหมอทุกจุด (persona เมนูฝั่งนี้เรียกรวมว่า bt — role nurse/assistant/bt ทั้งหมดเข้ากลุ่มนี้) หัวข้อนี้เน้นเฉพาะจุดที่ต่างจากหมอจริง พร้อมกรอบ "ตัวอย่างหน้าตา" ของทุกหน้าจอที่ BT ใช้ครบในหัวข้อนี้เลย (ไม่ต้องเลื่อนไปดูการ์ด "หมอ")

2.1 เมนูที่เห็น — ไม่มีเมนู "ลูกค้า"

persona bt ได้แถบเมนูแคบเหมือนหมอ (EMR + HR-ของฉัน) แต่ไม่มี "ลูกค้า" — คอมเมนต์ในโค้ด Layout.tsx: "CTO 2026-07-22: no customer menu — a BT preps products/assists, does not own the chart"

กรณีตัวอย่าง

BT ลองพิมพ์ URL /customers ตรงในแอดเดรสบาร์เอง — เมนูซ้ายไม่มีลิงก์นี้ให้กด (ต่างจากหมอที่มีเมนูนี้อยู่ในแถบข้าง) และฝั่งเซิร์ฟเวอร์ก็ยังคุมสิทธิ์จริงซ้ำอีกชั้นอยู่ดี

2.2 Worklist — เคสของฉันเป็นค่าเริ่มต้นเหมือนหมอ

role nurse/assistant/bt อยู่ใน CLINICAL_ROLE_KEYS เดียวกับหมอ — จอแคบเปิดมาที่แท็บ "เคสของฉัน" เป็นค่าเริ่มต้นเหมือนกัน หมายถึงเคสที่ staff id ของ BT ไปอยู่ในช่อง "ผู้ทำ" ของบริการใดๆ ในเคสนั้น — ไม่ใช่กติกาตาม role string เป็นการเช็คตัวตนจริงจากเซิร์ฟเวอร์

ตัวอย่างหน้าตา: แถบสลับ "เคสของฉัน / ทั้งหมด" + การ์ดเคส (Worklist)
เคสของฉัน 3 ทั้งหมด 12
10:30 กำลังให้บริการ

ฉีดฟิลเลอร์ใต้ตา + อีก 1 รายการ

ห้อง 2 · คุณ: ผู้ทำหัตถการ เปิดเคส

จอแคบเปิดที่ "เคสของฉัน" อัตโนมัติ · การ์ดขึ้นเฉพาะเคสที่ BT อยู่ในช่อง "ผู้ทำ" · ป้าย "คุณ: ผู้ทำหัตถการ"

กรณีตัวอย่าง

BT ที่วันนี้ถูกมอบหมายเป็นผู้ทำ 3 เคส (เตรียมของให้หมอ A 2 เคส, ทำความสะอาดหลังหัตถการให้หมอ B 1 เคส) เปิดแอปมือถือตอนเช้า — เห็นแท็บ "เคสของฉัน (3)" ทันที ไม่ต้องกดหาเองในคิวรวมของทั้งคลินิก

2.3-2.4 เปิดเคส + แท็บ "ชาร์ต & บันทึก"

ส่วนหัวคนไข้/สัญญาณชีพ/แพ้ยา เห็นเหมือนหมอทุกประการ ไม่มีข้อมูลถูกซ่อนสำหรับ BT

ตัวอย่างหน้าตา: การ์ดส่วนหัวคนไข้ (BT เห็นเหมือนหมอ — มีป้ายแพ้ยาแดง)
สมหญิง ใจดี (น้องหญิง)
HN 68-0042 · หญิง 34 · O
Gold แพ้ Penicillin
ความดัน118/76 ชีพจร72

ป้ายแพ้ยาสีแดงเด่นบนหัวการ์ด — BT เห็นก่อนเตรียมยา/ของ ไม่ต้องเปิดแท็บอื่นไปหา

สัญญาณชีพ — งานที่ BT ทำเป็นหลัก

กรณีตัวอย่าง

คนไข้เดินเข้าห้องตรวจ พยาบาลกด "อัปเดต" กรอกน้ำหนัก 58 ส่วนสูง 162 ความดัน 118/76 กด "บันทึก" — BMI ขึ้นให้อัตโนมัติ พอหมอเปิดเคสตามมาจะเห็นค่าล่าสุดพร้อมอยู่แล้ว ไม่ต้องวัดซ้ำ (ปุ่มไม่ได้ล็อกเฉพาะ role แต่เป็นลำดับงานจริงของคลินิก)

ตัวอย่างหน้าตา: การ์ดสัญญาณชีพ (BT กรอก — 6 ช่อง + BMI อัตโนมัติ)
สัญญาณชีพ อัปเดต
น้ำหนัก
58 kg
ส่วนสูง
162 cm
BMI
22.1
ชีพจร
72 /min
ความดัน
118/76 mmHg
อุณหภูมิ
36.7 °C

BT กด "อัปเดต" กรอกค่า → BMI คำนวณอัตโนมัติ · หมอเปิดเคสตามมาเห็นค่าล่าสุดพร้อม ไม่ต้องวัดซ้ำ

Chart หลายชั้น + วาด — BT ไม่ได้เป็นเจ้าของชั้น

ชั้นชาร์ตผูกกับ "หมอเจ้าของชาร์ต" เท่านั้น — BT ไม่สามารถเปิดชั้นชาร์ตในชื่อตัวเองได้ (ปุ่ม "เพิ่ม chart" เลือกได้เฉพาะรายชื่อหมอ) แต่ยังกดปุ่ม "วาดเต็มจอ (iPad)" หรือช่วยวาดในชั้นของหมอที่เปิดอยู่ได้

ตัวอย่างหน้าตา: พื้นที่ Chart/วาด (facechart) + ปุ่มวาดเต็มจอ (iPad)
ชาร์ตหลัก · นพ.สมชาย เพิ่ม chart (เฉพาะหมอ)
วาดเต็มจอ (iPad)

"เพิ่ม chart" จาง (เลือกได้เฉพาะชื่อหมอ) · BT กด "วาดเต็มจอ" ช่วยมาร์กจุดในชั้นของหมอที่เปิดอยู่ได้

กรณีตัวอย่าง

ระหว่างหัตถการ หมอสั่งให้ BT ช่วยมาร์กตำแหน่งจุดที่ทำความสะอาดหลังฉีดในชั้นชาร์ตของหมอ — BT ถือ iPad กด "วาดเต็มจอ (iPad)" วาดในชั้นที่หมอเปิดไว้อยู่แล้ว (ไม่ได้เปิดชั้นใหม่ในชื่อตัวเอง เพราะ dropdown เลือกเจ้าของชาร์ตมีแต่รายชื่อหมอ)

Doctor's Note — เขียนได้ แต่ระบุชื่อหมอที่รับผิดชอบ

กรณีตัวอย่าง

พยาบาลจดบันทึกอาการเบื้องต้นที่คนไข้เล่าให้ฟังก่อนหมอเข้าห้อง กดโหมด "พิมพ์" เขียนสรุป เลือก dropdown "แพทย์ผู้บันทึก" เป็นชื่อหมอที่จะดูเคสนี้ แล้วกด "บันทึกโน้ต" — พอหมอเปิดเคสตามมาจะเห็นโน้ตนี้เป็นการ์ดแรก พร้อมชื่อหมอที่ระบุกำกับไว้ ไม่ใช่ชื่อพยาบาลผู้พิมพ์

ตัวอย่างหน้าตา: กล่องเขียน Doctor's Note (สวิตช์ พิมพ์/เขียนมือ + แพทย์ผู้บันทึก)
พิมพ์ เขียนมือ
อาการเบื้องต้นที่คนไข้เล่า…
แพทย์ผู้บันทึก: นพ.สมชาย บันทึกโน้ต

พยาบาลจดก่อนหมอเข้าห้อง → เลือก "แพทย์ผู้บันทึก" ผูกชื่อหมอกับโน้ต ไม่ใช่ชื่อพยาบาลผู้พิมพ์

ICD-10 — จอเดียวกับหมอ แต่ตามหน้าที่จริงมักเป็นหมอกรอกวินิจฉัย เพราะเป็นเนื้อหาทางคลินิกที่ต้องอาศัยการตรวจของหมอ (ระบบไม่ได้ล็อก BT ออกจากฟอร์มนี้ แค่ในทางปฏิบัติไม่ใช่บทบาทที่ทำ)

ยา/เวชภัณฑ์ที่ใช้ — งานเตรียมของหลักของ BT

กรณีตัวอย่าง

BT เตรียมห้องหัตถการก่อนคนไข้เข้า — เปิด modal "เพิ่มสินค้าเข้าเคส" เลือกหมวด "วัสดุสิ้นเปลือง" ติ๊กเข็ม 1 ชิ้น ถุงมือ 2 คู่ สำลีแอลกอฮอล์ 5 ชิ้น กด "เพิ่มสินค้า 3 รายการ" ระบบตัดสต็อกทันที — ล็อตที่ตัดเลือกล็อตใกล้หมดอายุสุดอัตโนมัติเหมือนหมอทำเอง ไม่มีสิทธิ์ต่างกัน

ตัวอย่างหน้าตา: modal "เพิ่มสินค้าเข้าเคส" — แถวยา/เวชภัณฑ์ +/− จำนวน + เลือก Lot (Auto FEFO)
เพิ่มสินค้าเข้าเคส
ค้นหาชื่อ / รหัสสินค้า…
แนะนำ วัสดุสิ้นเปลือง ทั้งหมด

เข็มฉีด 30G

คงเหลือ 340 ชิ้น

2
เลือก Lot Auto FEFO
Lot N2408 · หมดอายุ 10/2569 · เหลือ 120
เพิ่มสินค้า 1 รายการ

งานหลักของ BT — ปรับ +/− จำนวนวัสดุสิ้นเปลืองตามที่ใช้จริง · "Auto FEFO" เลือกล็อตใกล้หมดอายุสุดให้เอง · ตัดสต็อกทันที

Before/After — BT มักเป็นคนถือกล้อง/มือถือถ่ายรูปก่อน-หลังให้หมอเทียบผล ปุ่มกล้องใช้ได้เหมือนกันทุก role

ตัวอย่างหน้าตา: กรอบ Before/After + ปุ่มถ่ายรูป / ดูรูปเต็ม-เทียบ

ก่อนทำ

หลังทำ (ถ่ายรูป)

ดูรูปเต็ม/เทียบ

BT ถือกล้องถ่าย Before/After ให้หมอ · "ดูรูปเต็ม/เทียบ" เปิด side-by-side + slider · ปุ่มกล้องใช้ได้ทุก role

ClinicalStepper — BT เป็นเจ้าของ 2 ใน 4 ขั้น

เตรียมหัตถการ (เจ้าของ: BT) → ทำหัตถการ (เจ้าของร่วม: BT+แพทย์) → จบหัตถการ (เจ้าของ: BT — กดแล้วห้องว่าง คิวถัดไปเข้าได้)

ตัวอย่างหน้าตา: ClinicalStepper — 4 ขั้นหัตถการ (เจ้าของกำกับใต้ขั้น)
ตรวจ/ปรึกษา
แพทย์
2
เตรียมหัตถการ
BT
3
ทำหัตถการ
BT + แพทย์
4
จบหัตถการ
BT

ขั้นที่เสร็จ = เขียว · ขั้นปัจจุบัน = ม่วง · ขั้นถัดไปล็อกจนกว่าจะทำขั้นก่อนหน้าเสร็จ

กรณีตัวอย่าง

หลังหมอกดขั้น "ตรวจ/ปรึกษา" เสร็จ — BT เข้าไปกด "ทำขั้นนี้" ที่ "เตรียมหัตถการ" (จัดเตรียมเข็ม/ยาชา/พื้นที่) จากนั้นหมอกลับมาทำหัตถการจริง ทั้ง BT และหมอถือเป็นเจ้าของขั้น "ทำหัตถการ" ร่วมกัน (ปุ่มกดได้จากทั้งสองฝั่ง) — พอหัตถการเสร็จ BT เป็นคนกด "จบหัตถการ" ปุ่มนี้ปลดคิว/ปลดห้องให้ว่างรับคิวถัดไปทันที (toast "จบหัตถการแล้ว — ห้องว่าง รับคิวต่อได้") หมอไม่ต้องรอกดปุ่มนี้เอง

ลายเซ็นแพทย์ — BT เห็นแต่เซ็นแทนไม่ได้ในทางปฏิบัติ เพราะไม่ใช่เจ้าของชั้นชาร์ต ช่องเซ็นในแถบนี้ผูกกับหมอโดยธรรมชาติของข้อมูล ไม่ใช่การล็อกแยกต่างหาก

2.5-2.7 รายการ&บิล / ข้อมูลคนไข้ / ยินยอม

แถบ "ผู้ทำ" ต่อบริการเลือกได้ทั้งหมอ/พยาบาล/ผู้ช่วยจาก dropdown เดียวกัน ในทางปฏิบัติ BT มักเป็น "ผู้ทำ" ของบริการเสริม (ทำความสะอาดผิว, พันแผล) ที่หมอมอบหมายให้ กล่อง "ยอดรวมเคสนี้" price-gated พยาบาล/ผู้ช่วย/BT ไม่เห็นยอดเงินเช่นกัน

ตัวอย่างหน้าตา: แถบ "ผู้ทำ" ต่อบริการ + กล่องยอดรวม price-gated (BT เห็นเป็น "—")

ทำความสะอาดผิวหลังฉีด

ผู้ช่วย: น้องแนน
ยอดรวมเคสนี้

"ผู้ทำ" เลือกได้ทุกบทบาทจาก dropdown เดียวกัน · ยอดเงิน price-gated: BT/พยาบาลเห็น "—" ไม่เห็นตัวเลข

ปุ่ม "ใช้สิทธิ์"/"โอนสิท" ไม่ได้ล็อกเฉพาะหมอ — พยาบาล/ผู้ช่วยที่ดูแลคนไข้ตรงหน้าสามารถกด "ใช้สิทธิ์" แทนคนไข้ที่มาใช้คอร์สได้เช่นกัน

BT/พยาบาลมักเป็นคนเลือกเทมเพลตแล้วส่ง iPad ให้คนไข้เซ็นจริงระหว่างเตรียมคนไข้ก่อนหมอเข้าห้อง หรือเป็นคนอัปโหลดฟอร์มกระดาษที่คนไข้เซ็นไว้แล้วเข้าระบบ — จอและสิทธิ์เหมือนหมอทุกประการ

2.8-2.10 ปิดเคส / ไม่มีเมนูลูกค้า / HR-ของฉัน

ปุ่มปิดเคส/ส่งไปชำระเงิน/เพิ่มย้อนหลัง ปรากฏตามสถานะเคส (ไม่ใช่ตาม role ที่ล็อกอิน) — พยาบาล/ผู้ช่วย/BT เห็นปุ่มชุดเดียวกับหมอถ้ามีสิทธิ์ แต่ในทางปฏิบัติขั้นตอนปิดเคส/ส่งชำระมักเป็นหน้าที่หมอหรือฝ่ายหน้าเคาน์เตอร์ตัดสินใจ เพราะเกี่ยวข้องกับ diagnosis/notes และการเงินที่ BT มองไม่เห็นตัวเลขอยู่แล้ว BT ไม่มีทางเข้าเมนูลูกค้าแบบไม่ผูกเคส HR-ของฉันเหมือนหมอทุกจุด (ข้อมูลส่วนตัว/ตารางงาน/ลงเวลา/ลา/OT/สลิปเงินเดือน/ใบอนุญาต ของตัวเองเท่านั้น)

ตัวอย่างหน้าตา: ปุ่มปิดเคส / ส่งไปชำระเงิน (BT เห็นชุดเดียวกับหมอถ้ามีสิทธิ์)
ปิดเคส ส่งไปชำระเงิน

ปุ่มตามสถานะเคส (ไม่ล็อกตาม role) · ปิดเคส=เขียว · ส่งไปชำระเงิน=ฟ้า → คิว POS · ในทางปฏิบัติหมอ/เคาน์เตอร์เป็นคนกด

ตารางสรุปต่างกันตามบทบาท

จุดหมอพยาบาล / ผู้ช่วย / BT
เมนู "ลูกค้า"เห็นไม่เห็น
เมนู "ประวัติการรักษา (EMR)"เห็นเห็น
HR-ของฉันเห็น (กลุ่ม "ของฉัน")เห็น เหมือนกัน
Worklist มือถือ ค่าเริ่มต้นเคสของฉันเคสของฉัน (เกณฑ์เดียวกัน)
ClinicalStepper ขั้น 1 "ตรวจ/ปรึกษา"เจ้าของขั้นไม่ใช่เจ้าของ (กดได้ถ้ามีสิทธิ์ แต่ป้ายระบุแพทย์)
ClinicalStepper ขั้น 2 "เตรียมหัตถการ"ไม่ใช่เจ้าของเจ้าของขั้น
ClinicalStepper ขั้น 3 "ทำหัตถการ"เจ้าของร่วมเจ้าของร่วม
ClinicalStepper ขั้น 4 "จบหัตถการ"ไม่ใช่เจ้าของเจ้าของขั้น (กดปลดห้อง/คิว)
เปิดชั้นชาร์ตในชื่อตัวเองทำได้ทำไม่ได้ (dropdown มีแต่รายชื่อหมอ)
ลายเซ็นในแถบ "ข้อมูลแพทย์"ผูกกับตัวเองผูกกับหมอเจ้าของชาร์ตเสมอ ไม่ใช่ตัวเอง
Doctor's Note (เขียน/พิมพ์)เขียนได้เขียนได้เหมือนกัน (ระบุ "แพทย์ผู้บันทึก" แยกจากผู้พิมพ์)
ยา/เวชภัณฑ์ (เพิ่ม/เลือกล็อต FEFO)ทำได้ทำได้เหมือนกัน (งานเตรียมของหลักของ BT)
ผู้ทำต่อบริการ (dropdown)เลือกตัวเองหรือมอบหมายคนอื่นได้ถูกเลือกเป็นผู้ทำได้ หรือเลือกคนอื่นเองก็ได้
ยอดรวมเคสนี้ (฿)ไม่เห็น (price-gated)ไม่เห็นเช่นกัน
ใช้สิทธิ์/โอนสิทธิ์แพ็กเกจทำได้ทำได้เหมือนกัน
ปิดเคส/ส่งไปชำระ/เพิ่มย้อนหลังปุ่มปรากฏตามสถานะเคส ไม่ผูก role บนจอเหมือนกัน — สิทธิ์จริงเช็คที่เซิร์ฟเวอร์
ข้อควรระวังเวลาอ่านตารางนี้แถวส่วนใหญ่ที่เขียนว่า "ทำได้เหมือนกัน" หมายถึงหน้าจอไม่ได้ล็อกด้วย role — ความต่างในทางปฏิบัติเกิดจากการมอบหมายงานจริงของคลินิก ไม่ใช่ระบบบังคับ ส่วนแถวที่ต่างจริงในโค้ด (เมนูลูกค้า, เจ้าของชั้นชาร์ต, เจ้าของขั้น ClinicalStepper) คือจุดที่ถูกกำหนดตายตัวไว้ในระบบ
📦

เจ้าหน้าที่คลัง

รับของ ควบคุมล็อต เติมสต็อก จัดซื้อ

เมนูของคุณ

คลังสินค้า (ทุกเมนูย่อย) จัดซื้อ (ถ้าเปิดใช้งาน)

เมนูอยู่ใต้ "คลังสินค้า" ในแถบซ้าย (16 หน้าย่อย) และถ้าคลินิกเปิดโมดูล "จัดซื้อ" เสริม จะมีอีก 4 หน้า — สังเกตป้ายตัวเลขสีแดง/เหลือง (badge) ข้างเมนูย่อยฝั่งซ้าย ขึ้นเมื่อมีงานค้างที่ต้องทำ เปิดดูก่อนเป็นอันดับแรกทุกเช้า

§1 แดชบอร์ดคลัง

ควรเป็นหน้าแรกที่เปิดทุกเช้า: แบนเนอร์สีเหลือง/แดง "รอปรับสต็อก" (ขึ้นเฉพาะตอนมีของขายไปแล้วแต่ยังไม่รับเข้าจริง), การ์ดสรุป 4 ใบ (รายการทั้งหมด/มูลค่าสต็อก/ใกล้หมด/ใกล้หมดอายุ), ปุ่มลัด 3 ปุ่ม (รับสินค้าเข้า/นับสต็อก/ยาใกล้หมด), ตาราง "ต้องเติมด่วน (Top 5)" คู่ "ใกล้หมดอายุ" และ "อันดับสินค้าที่ใช้บ่อย (90 วัน)"

ตัวอย่างหน้าตา: แดชบอร์ดคลัง — แบนเนอร์รอปรับสต็อก + การ์ดสรุป + ปุ่มลัด
รอปรับสต็อก 3 รายการ — มีของขายไปแล้วแต่ยังไม่รับเข้าจริง ดูรายการ
มูลค่าสต็อก
฿1.86M
ใกล้หมด
7
รับสินค้าเข้า นับสต็อก ยาใกล้หมด

แบนเนอร์ "รอปรับสต็อก" (แดง/เหลือง) ขึ้นเฉพาะตอน oversell · มูลค่าสต็อกเห็นเฉพาะผู้มีสิทธิ์ต้นทุน

สถานการณ์ทำอะไรผลลัพธ์
เปิดหน้ามาเจอแบนเนอร์สีแดง "รอปรับสต็อก 3 รายการ"กด "ดูรายการรอปรับสต็อก" ในแบนเนอร์พาไปหน้า §14 ตรง เห็นรายการที่ยอดติดลบทันที
อยากรู้มูลค่าสต็อกลอยตัวเดือนนี้ (ผู้มีสิทธิ์เห็นต้นทุนเท่านั้น)เลื่อนดูวิดเจ็ต "มูลค่าสต็อกตามหมวด"ถ้าไม่มีสิทธิ์เห็นต้นทุน วิดเจ็ตนี้จะไม่แสดงเลย (ไม่ใช่ error แค่ถูกซ่อน)
ของมาส่งพอดี ไม่อยากไล่หาเมนูกดปุ่มลัด "รับสินค้าเข้า" กลางแดชบอร์ดไปหน้า GR ทันที ไม่ต้องเข้าเมนูซ้าย

§2 สินค้า / ผลิตภัณฑ์

ตารางสินค้าทั้งหมด: รหัส/ชื่อ (มีรูป), หมวด, คงเหลือ (มีจุดสั่งกำกับใต้ตัวเลข), หน่วย, ราคา/หน่วย, วันหมดอายุ, สถานะ (หมด/ใกล้หมด/ใกล้หมดอายุ/ปกติ) — ค้นหา/กรองครบ 9 แบบ (ชื่อ/คงเหลือ/วันที่เพิ่ม/วันหมดอายุ/ราคา/SKU) ตัวกรองที่เลือกไว้จำในเครื่องให้อัตโนมัติ

ตัวอย่างหน้าตา: ป้ายสถานะสต็อก + ป้ายตัวเลขงานค้างบนเมนู
หมด ใกล้หมด ใกล้หมดอายุ ปกติ
คลังสินค้า 3 ← ตัวเลขส้ม = จำนวนงานค้าง (รอปรับสต็อก/ยาใกล้หมด)
  • อยากดูว่าสินค้าตัวนี้เหลือกี่ lot วันหมดอายุอะไรบ้าง → กดไอคอนตา (Eye) ที่แถวสินค้า → เห็นรายการ lot ทั้งหมดในหน้าต่างเดียว
  • มีสินค้าใหม่เข้ามาขายที่ยังไม่เคยมีในระบบ → กด "เพิ่มสินค้า" มุมขวาบน → กรอกฟอร์ม → บันทึก แล้วค่อยไปรับเข้าสต็อกจริงที่หน้า GR (§3) เพราะตรงนี้แค่สร้างตัวสินค้า ยังไม่ได้เติมของเข้าคลัง
  • สินค้าเดิมมี lot ใหม่เข้ามา → กดปุ่ม "รับ-จ่ายสต็อก" มุมขวาบน หรือไอคอนกล่อง (Box) ที่แถวสินค้านั้นโดยตรง
  • นำเข้าสินค้าทีเดียวหลายร้อยรายการจาก Excel → กด "นำเข้าจากไฟล์" → ดาวน์โหลดฟอร์ม → กรอก → อัปโหลด → ระบบตรวจก่อนยืนยัน → อัปโหลดไฟล์เดิมซ้ำจะอัปเดตแถวเดิมตาม SKU ไม่สร้างซ้ำ
  • แก้ไขข้อมูลสินค้า → ไอคอนดินสอที่แถว — ถ้า login ด้วยบัญชีสิทธิ์จำกัดกว่า admin จะเห็นทูลทิปเปลี่ยนเป็น "อัปเดตรูปสินค้า" เท่านั้น (แก้ได้แค่รูป ไม่ใช่ราคา/หมวด)

§3 รับสินค้าเข้า (GR) — หน้าที่ใช้บ่อยที่สุด

ตัวกรองสถานะ: ทั้งหมด/ร่าง/รอตรวจสอบ/Post แล้ว/รอบัญชีเติมต้นทุน — ถ้าคลินิกเปิด "ต้องตรวจทานก่อนโพสต์" ใบรับเข้าใหม่จะค้างที่ "รอตรวจสอบ" ก่อนตัดเข้าสต็อกจริง

ตัวอย่างหน้าตา: ตัวกรองสถานะ GR + การ์ดใบรับเข้า + badge "รอบัญชีเติมต้นทุน"
ทั้งหมด ร่าง รอตรวจสอบ Post แล้ว รอบัญชีเติมต้นทุน

GR-2569-0142

Supplier: บจก. เมดิคอล · 8 รายการ

รอบัญชีเติมต้นทุน
Post เติมต้นทุน

รับของก่อน ใส่ต้นทุนทีหลังได้ — ใบขึ้น badge เหลือง "รอบัญชีเติมต้นทุน" · บัญชีกด "เติมต้นทุน" แล้วคำนวณถัวเฉลี่ยใหม่เอง

ขั้นตอนปกติ: กรอกวันที่รับ/Supplier/PO/หมายเหตุ → เพิ่มรายการในกริดแบบ bulk (สินค้า, Lot number บังคับ, จำนวน, ต้นทุน/หน่วย, วันหมดอายุ, GPO/เย็น, ตำแหน่งจัดเก็บ) → บันทึกเข้าสถานะ "ร่าง" → กด "Post" ที่แถว → ยืนยัน modal "สร้าง Lot และบันทึก movement — ไม่สามารถย้อนกลับได้" → สต็อกเข้าจริง

กรณี A

ของมาส่ง แต่ยังไม่รู้ต้นทุน/ใบแจ้งหนี้ยังไม่ออก — กรอก lot + วันหมดอายุตามปกติแต่เว้นช่องต้นทุน/หน่วยว่างไว้ Post ได้ตามปกติ สต็อกเข้าจริงทันที ไม่ต้องรอต้นทุน ใบรับขึ้นสถานะ "รอบัญชีเติมต้นทุน" (badge เหลือง) ทีมบัญชีจะกดปุ่ม "เติมต้นทุน" ที่แถวทีหลัง บันทึกเป็น movement ปรับมูลค่าแบบ append-only และคำนวณต้นทุนถัวเฉลี่ยเคลื่อนที่ใหม่ให้อัตโนมัติ — สรุป: ไม่ต้องรอใบแจ้งหนี้ก่อนรับของเข้าคลัง

กรณี B

คลินิกเปิดโหมด "ต้องตรวจทานก่อนโพสต์" — กด Post แล้วใบไม่เข้าสต็อกทันที ค้างที่ "รอตรวจสอบ" ต้องรอผู้มีสิทธิ์กด "อนุมัติ" ก่อนสต็อกจะเข้าจริง หรือกด "ตีกลับ" ถ้าข้อมูลผิด — อย่าตกใจว่าทำไมสต็อกยังไม่ขึ้น

กรณี C

ของมาหลาย lot ของสินค้าตัวเดียวกัน (คนละวันหมดอายุ) — แยกกรอกทีละแถวในกริด แต่ละแถวใส่ lot number ต่างกัน ห้ามรวมเป็นแถวเดียวเพราะวันหมดอายุต่างกัน ระบบสร้าง lot แยกให้ ไม่ปนกัน

§4 Lot & วันหมดอายุ

ตารางทุก lot: Lot Number (badge GPO/เย็น), สินค้า, คงเหลือ (จำนวนที่ถูกจองอยู่ใต้ตัวเลข), วันหมดอายุ (นับถอยหลัง), สถานะ, ที่เก็บ — ชิปกรอง ทั้งหมด/≤30 วัน/≤90 วัน/หมดอายุแล้ว/กักกัน-เรียกคืน

ตัวอย่างหน้าตา: ป้าย Lot (GPO/เย็น) + วันหมดอายุนับถอยหลัง + ปุ่ม "Post" GR
GPO เย็น 2–8°C เหลือ 24 วัน หมดอายุแล้ว Post

"Post" ยืนยันสร้าง Lot + บันทึก movement (ย้อนกลับไม่ได้) — ป้ายวันหมดอายุเปลี่ยนสีตามความใกล้

  • เจอ lot ใกล้หมดอายุใน 30 วัน อยากกันไม่ให้ขายออก → กดชิป "≤30 วัน" พิจารณาย้ายไปหน้าขาย/โปรลดราคาด่วนตามนโยบายคลินิก
  • สงสัยว่า lot มีปัญหาคุณภาพ (เก็บผิดอุณหภูมิ) → กด "แก้ไข" เปลี่ยนสถานะเป็น "กักกัน" — lot จะไม่ถูกเลือกไปจ่าย/ขายจนกว่าจะเปลี่ยนกลับ
  • Supplier เรียกคืนสินค้าทั้งรุ่น → เปลี่ยนสถานะเป็น "เรียกคืน" แล้วไปเปิดใบเคลม (§12)
  • lot หมดอายุไปแล้วแต่ยังค้างในระบบ → ขึ้น "หมดแล้ว" (เทา) อัตโนมัติตามวันที่ ไม่ต้องกดอะไร แต่ต้องไปดำเนินการปรับปรุงสต็อกตัดออก (§6) ถ้าต้องการเคลียร์ยอด

§5 ยาใกล้หมด / Reorder

การ์ด KPI 2 ใบ (ต่ำกว่า/เท่ากับจุดสั่ง, รายการแนะนำสั่ง) ตาราง: สินค้า, คงเหลือ, ขั้นต่ำ, จุดสั่ง, ควรสั่งเพิ่มเท่าไหร่, หน่วย, Supplier ล่าสุด

ตัวอย่างหน้าตา: KPI ต่ำกว่าจุดสั่ง + ตาราง Reorder + Export
ต่ำกว่า/เท่าจุดสั่ง
7
สินค้าคงเหลือจุดสั่งควรสั่ง
สำลีก้าน1250+100
เข็ม 30G4550+80
Export Excel

สินค้าต่ำกว่าจุดสั่งขึ้นเองอัตโนมัติ · หน้านี้ "ตรวจจับ+รายงาน" ไม่มีปุ่มสร้าง PO (ไปที่ §17.3)

สินค้าตกลงมาต่ำกว่าจุดสั่งซื้อขึ้นในตารางนี้อัตโนมัติ ไม่ต้องไล่เช็คทีละตัว ต้องส่งใบขอซื้อ → กด Export Excel แล้วส่งไฟล์ต่อ — หน้านี้ไม่มีปุ่มสร้าง PO ในตัวเอง ถ้าต้องสร้าง PO จริงต้องไปที่ §17.3 (มักเป็นสิทธิ์ admin เท่านั้น) — บทบาทของหน้านี้คือ "ตรวจจับ+รายงาน" ไม่ใช่ "สั่งซื้อ"

§6 ปรับปรุงสต็อก

ใช้เมื่อยอดในระบบไม่ตรงกับของจริงหน้าคลัง (ไม่ใช่กรณีนับสต็อกทั้งรอบ ดู §7) — กด "สร้างการปรับปรุง" → เลือกเหตุผลหลัก (เสียหาย/หาย/นับผิด/หมดอายุ-ทำลาย/ปรับปรุงตัวเลข/อื่นๆ) → เพิ่มแถวเลือกสินค้า+Lot กรอก "ยอดใหม่" (เลขสัมบูรณ์ ไม่ใช่ผลต่าง เช่นเหลือ 8 ชิ้นกรอก 8 ไม่ใช่ -2) → "ส่งขออนุมัติ" → ผู้มีสิทธิ์กด "อนุมัติ" → กด "ดำเนินการ" อีกครั้งสต็อกถึงจะเปลี่ยนจริง

ตัวอย่างหน้าตา: ปุ่มสร้างการปรับปรุง + ลำดับสถานะ (ร่าง→รออนุมัติ→อนุมัติ→ดำเนินการ)
สร้างการปรับปรุง
ร่าง รออนุมัติ อนุมัติแล้ว ดำเนินการแล้ว

"ยอดใหม่" = เลขสัมบูรณ์ (เหลือ 8 กรอก 8) · สต็อกเปลี่ยนจริงเมื่อกด "ดำเนินการ" หลังอนุมัติเท่านั้น

  • เจอสินค้าแตกหักระหว่างเก็บของ → เหตุผล "เสียหาย" กรอกยอดใหม่ (ของจริงที่เหลือหลังหักตัวที่แตก) ส่งขออนุมัติ
  • นับ 1 ตัวแล้วรู้สึกว่าจำนวนผิดตั้งแต่ไหน แต่ยังไม่ถึงรอบนับใหญ่ → สร้างการปรับปรุงเดี่ยว เหตุผล "นับผิด" ได้เลย ไม่ต้องรอรอบนับทั้งคลัง
ระวังถ้ามีคนขายสินค้าตัวนั้นออกไปตอนใบปรับปรุงยังค้าง "รออนุมัติ" ระบบจะจับได้ว่าคงเหลือปัจจุบันเปลี่ยนไป แล้วแจ้ง error ตอนกด "ดำเนินการ" แทนที่จะปรับผิดยอดไปเงียบๆ — ต้องกลับไปตรวจดูใบใหม่

§7 นับสต็อก

ใช้ตอนถึงรอบนับสต็อกทั้งคลัง/ทั้งหมวด/ทั้งโซน — กด "สร้างรอบนับสต็อก" ระบุที่เก็บ/โซน (ถ้ามี) → กรอก "ยอดนับจริง" ต่อสินค้า (คอลัมน์ "ยอดระบบ" เป็น snapshot กรอกเองไม่ได้) → "สร้างรอบนับ" (ร่าง) → "ส่งตรวจ" (รอตรวจสอบ — ระบบคำนวณส่วนต่างให้ตอนนี้) → ผู้มีสิทธิ์กด "อนุมัติ" → สต็อกถูกปรับตามส่วนต่างจริง

ตัวอย่างหน้าตา: ตารางนับสต็อก (ยอดระบบ vs ยอดนับจริง + ส่วนต่างไฮไลต์)
สินค้ายอดระบบยอดนับจริงส่วนต่าง
เข็ม 30G1201200
สำลีก้าน8074−6

"ยอดระบบ" = snapshot กรอกเองไม่ได้ · แถวมีส่วนต่างไฮไลต์เหลือง เช็คซ้ำก่อนส่งตรวจ (อนุมัติแล้วปรับสต็อกทันที)

  • นับสต็อกทั้งคลังตอนสิ้นเดือน → สร้างรอบไม่ระบุที่เก็บ/โซน (นับทั้งหมด) ทยอยกรอกยอดนับจริงตามที่เดินนับหน้างาน
  • นับเฉพาะโซนเย็น/ตู้เก็บยาเฉพาะ → ระบุที่เก็บ/โซนตอนสร้างรอบ จำกัดขอบเขต
  • นับเสร็จแล้วพบส่วนต่างเยอะผิดปกติ → ตารางไฮไลต์แถวส่วนต่าง >0 เป็นสีเหลือง เช็คซ้ำก่อนส่งตรวจเพราะเมื่ออนุมัติแล้วสต็อกเปลี่ยนตามทันที

ใบนับกระดาษ: กด "ใบนับทั้งคลัง (PDF)" ที่หัวหน้าจอ หรือ "ใบนับเฉพาะที่เลือก (PDF)" ในหน้าต่างสร้างรอบนับ จะได้ไฟล์แยกบรรทัดตาม Lot พร้อมยอดระบบและช่องเขียนยอดที่นับได้ — ถือไปเดินนับที่ชั้นแล้วค่อยกลับมากรอกในระบบ

สินค้าที่มีหลาย Lot: ติ๊ก "แยกราย Lot ทุกตัว" ที่หัวคอลัมน์ Lot ระบบแตกบรรทัดให้ทุกสินค้า พร้อมบอกว่าแต่ละ Lot เหลือเท่าไหร่ ลงยอดผิด Lot ได้ยากขึ้นมาก

อนุมัติรอบนับใช้สิทธิ์ชุดเดียวกับอนุมัติปรับปรุงสต็อก (§6) ไม่ใช่สิทธิ์แยกต่างหาก

§8 โอนย้ายสาขา

ใช้โอนระหว่างสาขาภายใน instance/ระบบเดียวกัน — กด "สร้างใบโอน" ระบุสาขาปลายทาง → "เลือกสินค้าหลายรายการ" (multi-pick, กันเลือก lot ซ้ำ+จำกัดจำนวนไม่เกินคงเหลือ) → "สร้างใบโอน" (รอจัดส่ง) → กด "จัดส่ง" ที่แถว → สต็อกตัดออกจากต้นทางทันที (จัดส่งแล้ว) → ปลายทางกด "รับของ" → สต็อกเข้าสาขาปลายทาง

ตัวอย่างหน้าตา: ปุ่มโอนย้ายสาขา (สร้างใบโอน → จัดส่ง → รับของ)
สร้างใบโอน จัดส่ง รับของ

กด "จัดส่ง" ตัดสต็อกต้นทางทันที · ของ "ระหว่างทาง" ไม่อยู่ในสต็อกทั้งสองฝั่งจนปลายทางกด "รับของ" · ไม่มีปุ่มยกเลิกหลังจัดส่ง

กรณีตัวอย่าง

สาขา A ของขาด สาขา B มีเหลือ — เจ้าหน้าที่สาขา B สร้างใบโอนระบุปลายทาง A → เลือก lot ที่จะส่ง → จัดส่ง → สต็อกฝั่ง B ลดทันที แต่ของยังไม่เข้าฝั่ง A จนกว่า A จะกด "รับของ" (ช่วงระหว่างทางของจะไม่อยู่ในสต็อกของทั้งสองฝั่ง สะท้อนของจริงที่กำลังเดินทาง)

กดจัดส่งผิด lot ต้องแก้ผ่านการปรับปรุงสต็อก/ประสานอีกฝั่งเอง — หน้านี้ไม่มีปุ่ม "ยกเลิกการจัดส่ง" หลังกดจัดส่งไปแล้ว จึงควรเช็ค lot ให้ถูกก่อนกดทุกครั้ง

§9 โอนออกภายนอก

ใช้โอนไป instance อื่น (แบรนด์/คลินิกอื่นที่แยกระบบกันจริง) มี 2 โหมด: โหมด 1 — ส่งออนไลน์ (เชื่อมต่อกันแล้ว ปลายทางกำหนดอัตโนมัติ กันพิมพ์ผิด กด "จัดส่ง" ตัดสต็อกจริง ใบที่จัดส่งแล้วโหมดนี้ไปโผล่ที่เมนู "ข้ามคลินิก" (§11) แทน) โหมด 2 — Export ไฟล์ (ไม่ต้องเชื่อมต่อ พิมพ์ชื่อ instance ปลายทางเอง กด "จัดส่ง" ตัดสต็อกจริง มีปุ่ม "ไฟล์โอน" JSON และ "PDF" ให้ส่งเอง ปลายทางเอาไฟล์ไปอัปโหลดที่ §10)

  • โอนของให้คลินิกในเครือที่ผูก binding กันไว้แล้ว → เลือกโหมด "ส่งออนไลน์" ทุกครั้ง เร็วกว่าและกันพิมพ์ชื่อผิด
  • โอนของให้คลินิกที่ไม่ได้เชื่อมเครือข่ายกัน → ใช้โหมด Export ไฟล์ พิมพ์ชื่อปลายทางเอง ส่งไฟล์/PDF ด้วยตัวเอง
  • เชื่อมต่อกันอยู่แต่เน็ตปลายทางหลุดชั่วคราว → แบนเนอร์เตือน "เชื่อมต่อไม่ได้ชั่วคราว" การส่งจะค้างคิวไว้และส่งอัตโนมัติเมื่อกลับมาเชื่อมได้

§10 รับโอนเข้า (นำเข้าไฟล์)

ฝั่งรับของใบโอนออกภายนอกโหมดไฟล์ (§9 โหมด 2) — กด "อัปโหลดไฟล์ใบโอน" (JSON) ระบบจับคู่ SKU กับสินค้าในคลังเราอัตโนมัติ: จับคู่ครบ → รับเข้าคลังทันที; จับคู่ไม่ครบ → ค้าง "รอตรวจสอบ" กด "รายละเอียด" แก้ไขจับคู่ SKU เอง ปุ่ม "รับเข้าคลัง" กดได้ก็ต่อเมื่อจับคู่ครบทุกแถว หรือกด "ปฏิเสธ" (ใส่เหตุผลได้) ถ้าไม่ต้องการรับ

§11 ข้ามคลินิก

ต้องเปิดใช้ "การเชื่อมต่อคลินิก" (binding) ก่อน — 4 แท็บย่อย: โอนของ (ประวัติใบโอนออนไลน์ที่เชื่อมกัน), ขอของ (ฝั่งไม่ใช่ hub ขอสินค้าจาก hub), มอบของ (ฝั่ง hub มอบสินค้าให้ลูกข่าย), ตัดคลังเชื่อม (consignment) — ปุ่ม "สมุดหนี้ของ" และ (ฝั่ง hub+มีสิทธิ์) "หน้าอนุมัติ"

คลินิกลูกข่ายของหมด ขอเบิกจาก hub → แท็บ "ขอของ" สร้างคำขอ → รอฝั่ง hub อนุมัติที่ "หน้าอนุมัติ" → ของโอนมาให้เมื่ออนุมัติ เชื่อมต่อไม่ได้ชั่วคราว คำขอ/เอกสารใหม่จะ "ค้างส่ง" แล้วส่งอัตโนมัติทันทีที่กลับมาเชื่อมต่อได้ ไม่ต้องสร้างซ้ำ

§12 เคลมสินค้า (RMA)

2 แท็บ: "ใบเคลม" กับ "Issue จากเคส" (ปัญหาที่รายงานมาจาก EMR) — Badge สถานะ: เปิดเคลม (เหลือง) → ส่ง Supplier (ฟ้า) → คืนบางส่วน (ม่วง) → ได้ของคืนครบ (เขียว) หรือจบทางตัดจำหน่าย (แดง)/ยกเลิก (เทา)

  • พยาบาลแจ้งใน EMR ว่าของที่ใช้กับเคสมีปัญหา (เช่นเข็มชำรุด) → แท็บ "Issue จากเคส" → เปิดใบเคลมจาก issue นั้นโดยตรง ระบบดึงรายการให้อัตโนมัติ ไม่ต้องไล่หาว่าเคสนั้นตัดสต็อกอะไรไปบ้าง
  • เจอของชำรุดตอนตรวจของในคลัง (ไม่เกี่ยวกับเคส) → สร้างใบเคลมแบบเลือกเอง เลือก lot ที่ชำรุดตรงๆ (เลือกตรง lot เอง ไม่ใช่ FEFO อัตโนมัติเหมือนจ่ายขาย)
  • ส่งเคลม 10 ชิ้น Supplier คืนมาแค่ 6 ชิ้น → กรอกรับคืน 6 ชิ้นก่อน (คืนบางส่วน) แล้วสำหรับ 4 ชิ้นที่เหลือกด "ตัดจำหน่าย" ปิดยอดไป
  • สร้างใบเคลมผิด (เลือก lot ผิดตัว) → ถ้ายังไม่ได้ "ส่ง Supplier" กดยกเลิกได้เลย ของกลับเข้าคลังทันที — แต่ถ้าส่งไปแล้วต้องประสานแก้เป็นกรณีๆ ยกเลิกไม่ได้แล้ว

§13 ประวัติเคลื่อนไหว (Ledger)

ตัวกรองช่วงวันที่ (ค่าเริ่มต้น 30 วันล่าสุด) + ค้นหาสินค้า/lot + ชิปกรองประเภท (ทั้งหมด/ผิดปกติ/รับเข้า/จ่ายออก/ปรับปรุง/ส่งเคลม/รับคืนเคลม/โอนออก/โอนเข้า/คืน/เสีย-ทำลาย) แถวประเภท "ปรับปรุง"/"เคลม" มีพื้นหลังแดงอ่อนทั้งแถวให้สแกนหาเร็ว

สินค้ายอดไม่ตรงกับที่คาด → ค้นหาชื่อสินค้าดูทุกรายการเคลื่อนไหวเรียงเวลา คอลัมน์ "เหตุผล/Ref" อ้างอิงเอกสารต้นทาง (เลขที่ใบ GR/ปรับปรุง) กดตามไปดูรายละเอียดต่อได้ กดชิป "ผิดปกติ" ตัดรายการรับเข้า-จ่ายออกปกติทิ้ง เหลือแต่รายการที่ควรตรวจสอบ

คอลัมน์ "ผู้ทำ" บอกชื่อคนที่ทำรายการนั้น ถ้าเป็นงานที่ระบบทำเองจะขึ้นว่า "ระบบ" — ไฟล์ Excel ที่กดออกมีคอลัมน์นี้ด้วย

§14 รอปรับสต็อก

คิวสินค้าที่ยอดในระบบติดลบเพราะถูกขาย/จ่ายออกก่อนที่ของจะถูกรับเข้าจริง (ขายก่อนรับเข้า/oversell) — ถ้าไม่มีหน้านี้ ยอดติดลบจะสะสมเงียบๆ จนไปโผล่ตอนนับสต็อกใหญ่ทีเดียว การ์ด KPI: สินค้าที่ค้างอยู่, จำนวนติดลบรวม, มูลค่าโดยประมาณ, ค้างเกิน N วัน

  • ลูกค้าซื้อของที่ระบบยังไม่มีสต็อก (พนักงานขายกดขายไปทั้งที่ของยังไม่มา) → ยอดติดลบ → โผล่ที่หน้านี้อัตโนมัติ ไม่ต้องมีใครมาสร้างเอง
  • ของที่สั่งมาส่งถึงคลังพอดี → รับเข้าตามปกติที่ GR (§3) — ยอดติดลบหักล้างและหายออกจากหน้านี้เองทันที ไม่ต้องมาปิดรายการด้วยมือ
  • ค้างนานผิดปกติเกินเกณฑ์ (badge "ค้างเกิน N วัน") → ตามหา supplier/แผนกจัดซื้อว่าของมาถึงหรือยัง เพราะกระทบความถูกต้องของสต็อกและบัญชี

§15-§16 การจอง / รายงานคลัง — เฉพาะผู้มีสิทธิ์

§15 การจอง: กันสต็อกไว้ล่วงหน้าสำหรับแคมเปญ/นัดหมายใหญ่ ไม่ให้คนอื่นขายตัดไปก่อน → กด "จองสต็อก" ระบุเหตุผล+สินค้า+จำนวน → "จอง" (จองอยู่ — จำนวนที่จองโชว์ใต้คงเหลือที่หน้า Lot ด้วย) ถึงวันงานจริงกด "ใช้" หรือแคมเปญยกเลิกกด "คืน" ปล่อยจองกลับเข้าสต็อก

§16 รายงานคลัง: 5 แท็บ (ตัดสต็อก, มูลค่าสต็อก, Aging/หมดอายุ, เคลื่อนไหว, Waste Trend) — หัวหน้าขอสรุปมูลค่าสต็อกสิ้นเดือน → แท็บ "มูลค่าสต็อก" Export Excel/PDF

§17 จัดซื้อ (PO) — โมดูลเสริม จำกัดสิทธิ์

โมดูลเสริมที่คลินิกต้องเปิดใช้งานแยก — ถ้ายังไม่เปิด ทุกหน้าขึ้น "โมดูลจัดซื้อยังไม่เปิดใช้งาน" หน้าในกลุ่มนี้ส่วนใหญ่ล็อกให้ผู้ดูแลระบบเท่านั้น งานของเจ้าหน้าที่คลังที่เกี่ยวกับ PO ปกติจำกัดอยู่แค่ "รับของตาม PO" (17.4)

17.4 รับของตาม PO เข้าจากปุ่ม "รับของ" ที่หน้ารายละเอียด PO (ต้องเป็นสถานะ ส่งแล้ว/อนุมัติแล้ว/รับบางส่วน) รายการที่ยังค้างรับ (พรีฟิลจากยอดสั่ง−ยอดที่รับไปแล้ว) กรอก: จำนวนที่รับ, Lot Number (บังคับ), วันหมดอายุ, ต้นทุน/หน่วย (พรีฟิลแก้ไขได้), ตำแหน่งจัดเก็บ

  • ของมาส่งครบตามที่สั่งพอดี → กรอกครบทุกแถว → "บันทึกการรับสินค้า" → ระบบสร้างใบ GR ผูกกับ PO อัตโนมัติ ยอด "รับแล้ว" ที่ PO อัปเดตแล้ว
  • ของมาไม่ครบ (ส่งบางส่วนก่อน) → ลบแถวสินค้าที่ยังไม่มาออกก่อนบันทึก → PO เข้าสถานะ "รับบางส่วน" กดปุ่ม "รับของ" ซ้ำได้อีกรอบเมื่อของที่เหลือมาถึง
  • Supplier ส่งเกินจำนวนที่สั่ง → กรอกจำนวนจริงที่ได้รับ ระบบขึ้นกรอบเตือนเหลือง "รับเกินกว่าที่สั่ง" แต่ยังบันทึกรับเข้าได้ตามจริง (ไม่บล็อก) — ควรแจ้งผู้สั่งซื้อให้ทราบ

สรุป: อะไรทำได้เอง อะไรต้องรอผู้ดูแล/หัวหน้า

เจ้าหน้าที่คลังทั่วไปมักทำเองได้ในงานประจำวันทั้งหมด (ดูของ, สร้างใบรับ, ดู lot, ดู reorder, สร้างใบปรับปรุง/นับสต็อกแล้วส่งขออนุมัติ, สร้าง/จัดส่งใบโอน, สร้างใบเคลม, ดูประวัติเคลื่อนไหว, รับของตาม PO) แต่บางขั้นตอนเฉพาะเจาะจงและบางเมนูทั้งหมด "เฉพาะผู้ดูแล":

จุดที่ต้องรอผู้ดูแล/หัวหน้าอยู่ที่หน้าไหน
เติมต้นทุนที่ค้าง "รอบัญชีเติมต้นทุน"§3 รับสินค้าเข้า
อนุมัติ/ตีกลับใบรับที่ต้องตรวจทานก่อนโพสต์§3 รับสินค้าเข้า
แก้สถานะ lot (กักกัน/เรียกคืน)§4 Lot & วันหมดอายุ
อนุมัติ+ดำเนินการปรับปรุงสต็อก / อนุมัตินับสต็อก§6, §7
รับเข้าคลัง/ปฏิเสธใบโอนนำเข้าจากไฟล์§10 รับโอนเข้า
ตัดจำหน่ายเคลมค้าง§12 เคลมสินค้า
เข้าเมนู "การจอง" ทั้งเมนู§15
เข้าเมนู "รายงานคลัง" ทั้งเมนู§16
เข้าเมนู "จัดซื้อ" เกือบทั้งหมด (ยกเว้นรับของตาม PO)§17
เห็นคอลัมน์ต้นทุน/มูลค่าในบางตารางหลายหน้า — ถ้าไม่เห็นตัวเลขต้นทุนไม่ใช่บั๊ก แค่บัญชีไม่ให้สิทธิ์เห็น
ถ้าเจอเมนูที่ควรมีแต่ไม่ขึ้น หรือปุ่มที่ควรกดได้แต่กดไม่ได้ ให้เช็คก่อนว่าเป็นเมนู "เฉพาะผู้ดูแล" ตามตารางนี้หรือไม่ ก่อนแจ้งว่าระบบมีปัญหา
🧑‍💼

ฝ่ายบุคคล (HR)

พนักงาน ตารางกะ เงินเดือน การอนุมัติ

เมนูของคุณ

ระบบบริหารงานบุคคล (HR) — จัดการบุคคล HR → ของฉัน

เมนู HR แบ่งเป็น 2 กลุ่มเสมอ: "ของฉัน" (พนักงานทุกคนรวมแพทย์เห็น — ดู/จัดการข้อมูลของตัวเองเท่านั้น) และ "จัดการบุคคล" (HR/admin/super_admin เท่านั้น — ดู/จัดการข้อมูลของทั้งทีม+อนุมัติคำขอ+ตั้งค่าระบบ) หลายหน้าเป็น component เดียวกัน สลับมุมมองด้วยพารามิเตอร์ scope (self/team) — ข้อมูลทีมจะไม่ถูกส่งมาเลยถ้า role ไม่ใช่ผู้จัดการ (เซิร์ฟเวอร์กรอง ไม่ใช่แค่ซ่อนปุ่ม) ผู้อนุมัติทั้งหมด (ลา/OT/แก้เวลา/ตารางงาน/แลกเวร) คือ admin/super_admin เป็นหลัก — ระบบไม่มี "หัวหน้าแผนก" อนุมัติเฉพาะทีมตัวเอง แจ้งเตือนไปยัง admin ทุกคนในสาขาพร้อมกัน ใครกดก่อนก็มีผลเลย

ส่วนที่ 1 — "ของฉัน" (พนักงานทุกคนใช้ได้)

แดชบอร์ดของฉัน (/hr/me): การ์ด "เข้างานวันนี้" (KPI เดียวที่พนักงานทั่วไปเห็น — เป็นตัวเลขนับรวมทั้งสาขา ไม่ใช่แค่ตัวเอง), การ์ด "เข้าถึงด่วน" (ลัดไป 6 หน้าในกลุ่มของฉัน), ปฏิทินการลารายเดือน

ตัวอย่างหน้าตา: แดชบอร์ดของฉัน — การ์ด "เข้างานวันนี้" + เข้าถึงด่วน
เข้างานวันนี้
18
ลงเวลา ขอลา ขอ OT สลิปเงินเดือน

"เข้างานวันนี้" = KPI เดียวที่พนักงานทั่วไปเห็น (นับรวมทั้งสาขา) · "เข้าถึงด่วน" ลัด 6 หน้าในกลุ่มของฉัน

กิจกรรมของฉัน — ไทม์ไลน์กิจกรรมตัวเอง เป็น self-only จริง (เซิร์ฟเวอร์ส่งเฉพาะเหตุการณ์ของผู้ใช้ที่ล็อกอิน แก้ URL ดูของเพื่อนร่วมงานไม่ได้)

ข้อมูลส่วนตัว — ข้อมูลการเงิน (เงินเดือน/ประกันสังคม/บัญชีธนาคาร) เป็นดูอย่างเดียวเสมอ พนักงานแก้เองไม่ได้ กด "แก้ไขข้อมูล" แก้ได้แค่ที่อยู่/เบอร์ฉุกเฉิน/รูปโปรไฟล์ ถ้าข้อมูลการเงินผิดต้องแจ้ง HR ให้ไปแก้ที่หน้า "ข้อมูลพนักงาน" (2.2)

กรณีตัวอย่าง

พนักงานย้ายที่อยู่ใหม่ → เปิด "ข้อมูลส่วนตัว" → กด "แก้ไขข้อมูล" → แก้ "ที่อยู่ปัจจุบัน" → "บันทึกข้อมูล" → บันทึกสำเร็จทันที ไม่ต้องรออนุมัติ (ต่างจากคำขอลา/OT) แต่ถ้าเลขบัญชีธนาคารผิด จะแก้เองไม่ได้ ต้องแจ้ง HR

ตารางงานของฉัน

2 แท็บ: "ตารางงานรายสัปดาห์" (ส่งแผนเข้างานล่วงหน้าเป็นรายสัปดาห์ — คนละหน้ากับ "จัดตารางกะ" ที่แอดมินกำหนดกะให้ตรง) และ "ขอแลกเวร"

กติกาที่ระบบบังคับ: แต่ละวันที่ติ๊ก "มาทำงาน" ต้องมีช่วงเวลาอย่างน้อย 9 ชั่วโมง (ทำงาน 8 + พัก 1) — ไม่ครบระบบขึ้นข้อความชัดเจนและไม่ให้ส่ง / ส่งตารางงานข้ามเดือนไม่ได้ — ส่งได้ถึงวันสุดท้ายของเดือนปัจจุบันเท่านั้น

กรณีตัวอย่าง 1 (ส่งผ่าน)

เปิดสัปดาห์หน้า → ติ๊ก "มาทำงาน" จันทร์-ศุกร์ 09:00-18:00 (รวม 9 ชม.) → หยุดเสาร์-อาทิตย์ → "ส่งตารางงาน" → รอ admin อนุมัติ

กรณีตัวอย่าง 2 (ติดกติกา 9 ชั่วโมง)

กรอกวันจันทร์ 09:00-16:00 (รวม 7 ชม.) แล้วกดส่ง → ระบบปฏิเสธ ขึ้นข้อความบอกวันที่และเหตุผลชัดเจน → ต้องแก้เวลาให้ครบ 9 ชม. ก่อนจึงจะส่งได้

ขอแลกเวร: กด "+ เพิ่มคำขอ" เลือก "กะของฉัน" (เฉพาะกะของตัวเองจริงในอีก 60 วันข้างหน้า) + เพื่อนร่วมงานที่จะขอแลก + เหตุผล (บังคับ) — ผู้ถูกขอไม่ต้องกดยินยอมในระบบ เมื่อ admin อนุมัติ ระบบสลับเจ้าของกะให้ทันทีทั้งสองฝั่งโดยไม่มีขั้นตอนให้ปลายทางตอบรับก่อน จึงควรตกลงกันนอกระบบก่อนยื่นคำขอ

ลงเวลา / เวลาของฉัน

ปุ่มใหญ่ "ลงชื่อเข้างาน" (ฟ้า) / "ลงชื่อออกงาน" (แดง) ใต้ป้าย "ยืนยัน GPS: ภายในพื้นที่สาขา"

ตัวอย่างหน้าตา: ปุ่มลงชื่อเข้า/ออกงาน + ป้ายยืนยัน GPS
ยืนยัน GPS: ภายในพื้นที่สาขา
ลงชื่อเข้างาน ลงชื่อออกงาน

ออกงานก่อนครบ 8 ชม. = กล่อง "บันทึกออกงานก่อนกำหนด" · ลืม clock-out = แถวป้ายแดง "ไม่ได้ลงชื่อออก" + ปุ่มขอแก้เวลา

กรณีตัวอย่าง

ออกงานก่อนครบ 8 ชั่วโมง — clock-in 09:00 กด "ลงชื่อออกงาน" ตอน 14:00 (5 ชม.) → เปิดกล่อง "บันทึกออกงานก่อนกำหนด" พร้อมรายการผลกระทบที่อาจเกิด (คะแนนเข้างาน/คำนวณค่าจ้างตามสัดส่วนจริง/ต้องรับทราบจาก HR) → เลือก "ยืนยันการออกงานก่อนเวลา" หรือ "กลับไปทำงานต่อ"

กรณีตัวอย่าง

ลืมลงชื่อออกงาน — วันถัดไประบบตรวจพบอัตโนมัติ แถวขึ้นป้าย "ไม่ได้ลงชื่อออก" (แดง) พร้อมปุ่ม "ส่งคำขอแก้เวลา" กรอกเวลาออกงานที่ถูกต้อง (บังคับ) + เหตุผล (บังคับ) → "ส่งคำขอ" → รอ HR อนุมัติ (1-2 วันทำการ) — ปุ่มนี้ปรากฏเฉพาะแถวที่ระบบทำเครื่องหมายว่าไม่ได้ลงชื่อออกเท่านั้น ถ้าลืม clock-in ตั้งแต่ต้นวันต้องแจ้ง HR ตรวจสอบผ่านหน้าบันทึกเวลาทีมแทน — การแก้เวลาไม่สร้าง OT ให้เด็ดขาด ต้องยื่นคำขอ OT แยก

ลาของฉัน

การ์ดโควตาการลาแสดงทุกประเภทพร้อมจำนวนวันคงเหลือ/ทั้งหมด

ตัวอย่างหน้าตา: การ์ดโควตาการลา (แถบสัดส่วน) + ปุ่ม "ขอลาหยุด"
ลาพักร้อน4/6 วัน
ลาป่วย28/30 วัน
ขอลาหยุด

แถบสัดส่วนคงเหลือ/ทั้งหมด · โควตาไม่พอ = ปฏิเสธก่อนบันทึก (ยกเว้น "ลาไม่รับค่าจ้าง") · นับวันเต็มเสมอ ไม่รองรับครึ่งวัน

กรณีตัวอย่าง

ยื่นลาปกติ — กด "ขอลาหยุด" → เลือกประเภทการลา + วันที่เริ่ม-สิ้นสุด + เหตุผล (บังคับ) → "ส่งคำขอ" ระบบคำนวณจำนวนวันอัตโนมัติ (นับรวมหัวรวมท้ายเป็นวันเต็มเสมอ ไม่รองรับลาครึ่งวัน) ตรวจโควตาก่อนบันทึกทุกครั้ง → สถานะ "รออนุมัติ" admin ทุกคนในสาขาได้รับแจ้งเตือน

โควตาไม่พอ (เหลือ 2 วันแต่ขอ 5 วัน) → ระบบปฏิเสธทันทีก่อนบันทึก (ไม่ปล่อยค้างเป็นคำขอ) — ข้อยกเว้น: "ลาไม่รับค่าจ้าง" ไม่ตรวจโควตา เพราะไปหักเงินเดือนแทน ลาย้อนหลังระบบไม่ห้ามเลือกวันที่ย้อนหลัง แต่เป็นหน้าที่ผู้อนุมัติพิจารณาความสมเหตุสมผลเอง

ประเภทการลาผลต่อเงินเดือน
ลาป่วย / ลากิจ / ลาพักร้อนไม่หักเงิน
ลาไม่รับค่าจ้างหักตามสัดส่วนวัน (ฐานเงินเดือน × วันที่ลา ÷ จำนวนวันในเดือน) — ประกันสังคมยังคิดเต็ม
ลาคลอดนายจ้างจ่ายเต็ม 45 วันแรก ส่วนเกินหักเหมือนลาไม่รับค่าจ้าง
ขาดงาน (ไม่ได้ยื่นลา)หักเท่ากับลาไม่รับค่าจ้าง 1 วันต่อครั้ง

ไม่มีปุ่มยกเลิกใบลาบนหน้าจอ — ยื่นผิดต้องให้ admin กด "ปฏิเสธ" แทน เลยวันเริ่มลาไปแล้วยกเลิกไม่ได้เลย ต้องติดต่อ HR ปรับโควตาด้วยมือ

ขอ OT

ตัวอย่างหน้าตา: ฟอร์มขอ OT — เลือกอัตราตัวคูณ + จำนวนเงิน (โชว์ "—" ก่อนอนุมัติ)
เวลาเริ่ม18:00
เวลาสิ้นสุด21:00
1.5× วันทำงาน 2× วันหยุด 3× นักขัตฤกษ์
จำนวนเงิน:(คำนวณหลังอนุมัติ)

สูตร: ฐานเงินเดือน÷30÷8×ชั่วโมง×ตัวคูณ · ตารางโชว์ "—" จนอนุมัติ · เฉพาะ OT อนุมัติแล้วเข้าเงินเดือนงวดถัดไป

กรณีตัวอย่าง

กด "ขอ OT" → กรอกวันที่/เวลาเริ่ม/เวลาสิ้นสุด + เลือกอัตรา (1.5 เท่าวันทำงานปกติ / 2 เท่าวันหยุด / 3 เท่าวันหยุดนักขัตฤกษ์) + เหตุผล (บังคับ ≥3 ตัวอักษร) → "ส่งคำขอ" ระบบคำนวณจำนวนเงินทันที (สูตร: ฐานเงินเดือน÷30÷8×ชั่วโมง×ตัวคูณ) แต่ตารางยังโชว์ "—" จนกว่าจะอนุมัติ — เฉพาะ OT ที่อนุมัติแล้วเท่านั้นที่ถูกดึงเข้าเงินเดือนงวดถัดไป

สลิปเงินเดือนของฉัน + ใบอนุญาตของฉัน

หน้าดูอย่างเดียวของสลิปที่จ่ายแล้วเท่านั้น (ฉบับร่างไม่แสดง) — รายละเอียดแยกรายการต้องดูจากสลิปที่ HR ส่งทาง LINE แทน ใบอนุญาตของฉันเป็นหน้าดูอย่างเดียว (เพิ่ม/แจ้งเตือนทำได้เฉพาะ HR)

ตัวอย่างหน้าตา: แถวสลิปเงินเดือน (จ่ายแล้ว) + ป้ายใบอนุญาต "ใกล้หมดอายุ"
งวดเงินได้สุทธิสถานะ
ก.ค. 2569฿28,000฿23,400จ่ายแล้ว
ใบประกอบวิชาชีพเวชกรรมใกล้หมดอายุ · เหลือ 60 วัน

สลิปแสดงเฉพาะที่ "จ่ายแล้ว" · ใบอนุญาตเหลือ ≤90 วัน = ป้ายเหลือง + แจ้งเตือน 1 ครั้ง (ในระบบ+LINE) · แก้วันหมดอายุที่ HR เท่านั้น

กรณีตัวอย่าง

แพทย์มีใบอนุญาตประกอบวิชาชีพเวชกรรมจะหมดอายุในอีก 60 วัน — ระบบตรวจทุก 6 ชั่วโมง เมื่อเหลือ ≤90 วัน เปลี่ยนป้ายเป็น "ใกล้หมดอายุ" (เหลือง) อัตโนมัติ พร้อมส่งแจ้งเตือนหนึ่งครั้งทั้งในระบบและ LINE → แพทย์ไปต่ออายุจริง แล้วแจ้ง HR อัปเดตวันหมดอายุใหม่ที่หน้า "ทะเบียนใบอนุญาต" (2.10) เพราะหน้านี้แก้ไขเองไม่ได้

ส่วนที่ 2 — "จัดการบุคคล" (HR / admin / super_admin เท่านั้น)

แดชบอร์ดทีม (/hr/admin/dashboard): การ์ด KPI 4 ใบ (พนักงานทั้งหมด/เข้างานวันนี้/รออนุมัติลา/ใบอนุญาตใกล้หมด), เข้าถึงด่วน 6 ปุ่ม, การ์ด "รออนุมัติการลา" (4 รายการล่าสุด), ปฏิทินการลาทั้งทีม

ตัวอย่างหน้าตา: การ์ด KPI ทีม + ป้ายสถานะกะ + toast อนุมัติ
พนักงานทั้งหมด
24
รออนุมัติลา
3
พนักงานอนุมัติ รออนุมัติ เช้า 08:00–16:00
อนุมัติคำขอลาแล้ว — ตัดโควตาของพนักงานเรียบร้อย

ข้อมูลพนักงาน (/hr/employees)

กรณีตัวอย่าง

เพิ่มพนักงานใหม่ — กด "เพิ่มพนักงาน" กรอก 4 ส่วน: บัญชีผู้ใช้ (username/password/role/รหัสพนักงาน/แผนก/ตำแหน่ง/วันเริ่มงาน/สาขาที่เข้าถึงได้), ข้อมูลส่วนตัว, ข้อมูลทางการเงิน (ประเภทการจ้าง/ฐานเงินเดือน/ประกันสังคม/เงินกู้/บัญชีธนาคาร), ตารางเวลาทำงาน (ค่าตั้งต้นให้ "ตารางงานของฉัน") → "บันทึกข้อมูล"

ประเภทการจ้าง ตัดสินเส้นทางภาษี/เงินเดือนทั้งหมด: ลูกจ้างประจำ เข้าระบบเงินเดือนปกติ หักภาษีขั้นบันได (ภ.ง.ด.1) ส่วน ฟรีแลนซ์/ค่ามือ หัก ณ ที่จ่าย 3% ออกใบ 50 ทวิ (ภ.ง.ด.3) และไม่เข้าระบบเงินเดือนรายเดือน — เลือกผิดกระทบการคำนวณภาษีทั้งงวด สวิตช์ "ตั้งเป็นคนคีย์เคสเริ่มต้น" เปิดได้คนเดียวเท่านั้น ตั้งคนใหม่ระบบถอดสถานะจากคนเดิมอัตโนมัติ

พนักงานที่เป็น "Mirror" (สำเนามาจากคลินิกหลัก ระบบ multi-branch) badge "Mirror จาก [คลินิกหลัก]" ปุ่มแก้ไข/ลบถูกปิดอัตโนมัติ ต้องไปแก้ที่คลินิกหลัก — ลบพนักงาน: กดถังขยะ ยืนยันครั้งเดียว ไม่มีขั้นตอนยืนยันซ้ำและไม่มีปุ่ม "ปิดใช้งาน" แยก ก่อนลบควรพิจารณาว่ามีประวัติเงินเดือน/เวลา/ลาต้องอ้างอิงย้อนหลังไหม ถ้ามีแนะนำเปลี่ยนรหัสผ่าน+ถอดสาขาแทนการลบ

จัดตารางกะ + วางแผนกะการทำงาน

"จัดตารางกะ" (RosterPlanner) คนละหน้ากับ "ตารางงานของฉัน" — คลิกช่องว่างใต้ชื่อพนักงาน+วันที่ เลือกกะด่วน (เช้า/บ่าย/ดึก/หยุด) ปุ่ม "คัดลอกสัปดาห์ก่อน" กด "บันทึกตาราง (N)" บันทึกเป็นชุดเดียว

ตัวอย่างหน้าตา: กริดจัดตารางกะ (พนักงาน × วัน) + ป้าย "พนักงานอนุมัติ"
พนักงานจ.อ.พ.
น้องมิ้นท์ เช้า บ่าย หยุด
น้องแนน เช้า·อนุมัติ ดึก +
บันทึกตาราง (5)

คลิกช่องเลือกกะด่วน · ป้าย "พนักงานอนุมัติ" (เขียว) คลิกทับต้องยืนยัน · เกิน 9 ชม. = เตือนหลังบันทึก (ไม่บล็อก)

กรณีตัวอย่าง

เตือนแต่ไม่ห้าม — HR จัดให้พนักงานทำงาน 10 ชั่วโมงในวันเดียว (เกิน 9 ชม.) กด "บันทึกตาราง" ยังบันทึกได้ตามปกติ แต่ระบบขึ้นแบนเนอร์เตือนหลังบันทึก ไม่บล็อกการบันทึก เป็นการเตือนเชิงข้อมูลให้ HR ทบทวนเอง

ทับกะที่พนักงานส่งมาเองและอนุมัติแล้ว: ช่องมีป้าย "พนักงานอนุมัติ" (เขียว) — คลิกทับเปิดกล่องยืนยัน "ทับกะที่อนุมัติแล้ว" ก่อนเสมอ ป้าย "รออนุมัติ" (ส้ม) คลิกลิงก์ไปอนุมัติ/ปฏิเสธที่หน้า "อนุมัติตารางงาน" ได้ทันที "วางแผนกะการทำงาน" เป็นหน้าดูภาพรวมเท่านั้น ไม่มีปุ่มแก้ไข — เห็นคนขาดต้องไปแก้ที่ "จัดตารางกะ" แทน

อนุมัติตารางงาน / OT / แก้เวลา / การลา

ข้อสำคัญด้าน anti-fraud ที่ทำซ้ำในหลายหน้าผู้อนุมัติอนุมัติคำขอของตัวเองไม่ได้ ไม่ว่าจะเป็นคำขอลาหรือคำขอแลกเวร — ระบบปฏิเสธที่เซิร์ฟเวอร์เสมอแม้ผู้ใช้จะมีสิทธิ์ผู้อนุมัติเต็มก็ตาม ต้องให้ผู้อนุมัติคนอื่นในสาขาดำเนินการแทน
กรณีตัวอย่าง

admin เป็นทั้งผู้จัดการและบังเอิญเป็นคู่กรณีในคำขอแลกเวร (ผู้ขอหรือผู้ถูกขอ) → กดปุ่มอนุมัติในแถวของตัวเอง → ระบบปฏิเสธที่เซิร์ฟเวอร์ "คุณเป็นผู้ขอหรือผู้ถูกขอในคำขอนี้ จึงไม่สามารถอนุมัติ/ปฏิเสธเองได้" → ต้องให้ admin คนอื่นดำเนินการแทน — เช่นเดียวกับ HR ยื่นใบลาตัวเองแล้วมาอนุมัติเอง ระบบปฏิเสธด้วยข้อความ "ไม่สามารถอนุมัติคำขอลาของตัวเองได้"

อนุมัติ OT: จำนวนเงินคำนวณตอนพนักงานยื่น ไม่ใช่ตอนอนุมัติ กด "ปฏิเสธ" ต้องกรอกเหตุผลก่อนยืนยันเสมอ อนุมัติแก้เวลา: ถ้าเวลาออกที่พนักงานกรอกเร็วกว่าหรือเท่ากับเวลาเข้า ระบบปฏิเสธเองโดยอัตโนมัติแม้ HR จะกดอนุมัติ (ป้องกันข้อมูลผิดปกติ) อนุมัติการลา: อนุมัติได้เฉพาะใบที่สถานะ "รออนุมัติ" เท่านั้น ผลลัพธ์เมื่ออนุมัติระบบตัดโควตาของพนักงานทันที

แท็บ "โควต้า" แก้ไขได้รายคน ใช้เมื่อพนักงานลาครึ่งวันแต่ระบบไม่รองรับ (นับเต็มวันเสมอ) HR ต้องปรับตัวเลขคงเหลือด้วยมือหลังตกลงกันนอกระบบ แท็บ "ตั้งค่า" จัดการประเภทการลาที่มีในระบบ เพิ่มประเภทใหม่ปรากฏในดรอปดาวน์ทันที

บันทึกเวลาทีม + ทะเบียนใบอนุญาต

บันทึกเวลาทีม (/hr/attendance) ดูของคนอื่นเท่านั้น ไม่สามารถ clock-in/out แทนใครได้ ไม่มีปุ่มแก้เวลาให้ HR กดแทน (สิทธิ์แก้เป็นของพนักงานเจ้าของบันทึกเอง) HR ทำได้แค่แจ้งให้พนักงานไปยื่นคำขอแก้เวลาเอง

กรณีตัวอย่าง

ส่งแจ้งเตือนใบอนุญาตซ้ำด้วยมือ — ระบบส่งแจ้งเตือนอัตโนมัติเมื่อใบอนุญาตเหลือ ≤90 วันเพียงครั้งเดียว ถ้าพนักงานพลาดอ่าน กดปุ่มไอคอนสามเหลี่ยมเตือน "ส่งแจ้งเตือนหมดอายุ" ที่แถวนั้น ยิงแจ้งเตือนซ้ำทันที — ค่าเริ่มต้นของระบบคือไม่ห้ามพนักงานทำงานแม้ใบอนุญาตหมดอายุ (แจ้งเตือนอย่างเดียว) ต้องการบังคับจริงจังต้องแจ้งทีมเทคนิคเปิดสวิตช์แยกและควรเปิดหลังบันทึกใบอนุญาตครบทุกคนแล้วเท่านั้น

เงินเดือน & ค่าเคส (/hr/payroll)

ตัวช่วยประมวลผล 3 ขั้นตอน: เลือกงวดตรวจสอบฉบับร่าง (ระบบสร้างให้อัตโนมัติทุกช่อง ไม่มีช่องให้แก้ตัวเลขด้วยมือ กด "คำนวณใหม่" ได้ทุกเมื่ออย่างปลอดภัย) → ดำเนินการจ่าย (สรุปยอดรวม → "ยืนยันและประมวลผลทั้งหมด")

ตัวอย่างหน้าตา: ตัวช่วยประมวลผลเงินเดือน 3 ขั้น + ตารางฉบับร่าง + กล่อง WHT=0 soft-lock
1. เลือกงวด 2. ตรวจฉบับร่าง 3. ดำเนินการจ่าย
พนักงานเงินได้WHTสุทธิ
สมชาย฿28,000฿840฿26,240
ตรวจพบ WHT = 0 — บังคับกรอกเหตุผล ≥10 ตัวอักษร ก่อน "ยืนยันข้าม WHT" (หรือกลับไปแก้ประเภทการจ้าง)

ฉบับร่างระบบสร้างอัตโนมัติ ไม่มีช่องแก้มือ · WHT=0 = soft-lock หยุดทั้งกระบวนการ · "จ่ายแล้ว" = ล็อกถาวร ไม่มีปุ่มย้อน

กรณีตัวอย่าง

ระบบล็อกเมื่อ WHT = 0 (soft-lock) — พนักงานควรถูกหักภาษีตามเกณฑ์แต่ยอดคำนวณออกมา ฿0 (มักเกิดจากตั้งประเภทการจ้างผิด) → กด "ยืนยันและประมวลผลทั้งหมด" → ระบบหยุดกระบวนการทั้งหมดทันที เปิดกล่อง "ตรวจพบ WHT = 0" บังคับกรอกเหตุผลอย่างน้อย 10 ตัวอักษร ก่อนกด "ยืนยันข้าม WHT" ได้ (หรือ "ยกเลิก" กลับไปแก้ข้อมูลพนักงานก่อน) — เหตุผลบันทึกติดกับรายการนั้นถาวรเพื่อตรวจสอบภายหลัง

ข้อควรระวังสำคัญเมื่อเป็น "จ่ายแล้ว" คือล็อกถาวร ไม่มีปุ่มย้อนกลับ/แก้ไข/ยกเลิกในหน้าจอ ต้องตรวจฉบับร่างให้ละเอียดครบทุกคนก่อนกดยืนยันทุกครั้ง

ส่งสลิปให้พนักงาน: ปุ่ม "ส่งสลิป LINE" ต่อคน (กดได้หลังยืนยันจ่ายแล้ว) — ช่องทางส่งสลิปมีทาง LINE ทางเดียว ไม่มีอีเมล/PDF ให้ดาวน์โหลด พนักงานที่ยังไม่ผูก LINE จะได้รับแจ้งว่าส่งไม่สำเร็จ ต้องให้ HR ออกรหัสผูก LINE ให้ก่อน

รายงาน WHT/50 ทวิ + รายงาน HR

3 แท็บ: หนังสือรับรอง 50 ทวิ (ปุ่ม "ออกเอกสาร"/"ออกใหม่"/"ดาวน์โหลด" ต่อคน), ภ.ง.ด.1 (ลูกจ้างประจำ), ภ.ง.ด.3 (ฟรีแลนซ์/นิติบุคคล) — ทั้งสองมีปุ่มส่งออก Excel/CSV

"รายงาน HR" — การ์ดที่ส่งออกได้จริง (Excel+PDF): รายชื่อพนักงาน, บันทึกเวลา, การลา, เงินเดือน, ภาษีหัก ณ ที่จ่าย — การ์ดที่ขึ้น "เร็วๆ นี้" (ปุ่มส่งออกปิดไว้ตรงๆ ไม่ใช่ export ปลอม): OT, การประเมินผล, การสรรหา/ผู้สมัคร, ทรัพย์สิน/เบิก/สวัสดิการ

ตั้งค่า SSO + ตั้งค่าภาษี (PIT/WHT) + นโยบาย HR รายสาขา — admin/super_admin เท่านั้น

"ตั้งค่า SSO" หมายถึงประกันสังคม ไม่ใช่ single sign-on: อัตราเงินสมทบ/ฐานขั้นต่ำ/ฐานสูงสุด (ตามกฎหมายปัจจุบัน 5%, ฐาน ฿1,650–฿15,000, เพดาน ฿750/เดือน) — ช่อง "เงินสมทบสูงสุด/เดือน" คำนวณอัตโนมัติแก้ไม่ได้ มีแบนเนอร์เตือนให้ตรวจกับกฎหมายก่อนแก้

"ตั้งค่าภาษี" 2 ส่วน: ตารางขั้นบันได PIT (เพิ่ม/ลบขั้นได้) + อัตรา WHT บริการ (3% ตามกฎหมาย) — ฟรีแลนซ์หัก 3% ตามช่อง WHT แยกต่างหาก ไม่ผูกกับตารางขั้นบันได

กรณีตัวอย่าง

"นโยบาย HR รายสาขา" — บังคับให้พนักงานลงเวลาผ่าน LINE ได้เฉพาะเมื่ออยู่ในบริเวณสาขาจริง → เลือกสาขา → กรอกจุดศูนย์กลาง Geofence (lat/lng) + รัศมี (แนะนำ 100–300 เมตร) + Wi-Fi SSID ที่อนุญาต + เปิด "บังคับต่อ Wi-Fi ก่อน Clock-In" → บันทึก — ไม่กรอกอะไรเลยระบบไม่ตรวจสอบตำแหน่ง/Wi-Fi (เปิดกว้างเป็นค่าเริ่มต้น) การ์ด "ข้อมูลผู้เสียภาษี" (เลขผู้เสียภาษี 13 หลัก/ชื่อนิติบุคคล/ที่อยู่) ต้องกรอกให้ครบก่อนถึงจะออกเอกสาร 50 ทวิ/ภ.ง.ด.3 ของสาขานั้นได้

บทบาทที่ใช้ (สรุป)

กลุ่มเข้าถึงได้ทำอะไรได้
พนักงานทั่วไปเมนู "ของฉัน" ทั้งหมดดู/แก้ข้อมูลส่วนตัวบางส่วน, ลงเวลา, ขอลา, ขอ OT, ส่งตารางงาน/ขอแลกเวร, ดูสลิปเงินเดือน+ใบอนุญาตของตัวเอง
HR / admin / super_adminเมนู "จัดการบุคคล" ทั้งหมดเพิ่ม/แก้/ลบพนักงาน, จัดตารางกะ, อนุมัติตารางงาน/OT/แก้เวลา/การลา, ดูบันทึกเวลาทีม, ทะเบียนใบอนุญาตทีม, รันเงินเดือน, ออกเอกสาร WHT/50 ทวิ, ดูรายงาน HR
admin / super_admin เท่านั้นนโยบาย HR รายสาขาตั้งค่า Geofence/Wi-Fi + ข้อมูลผู้เสียภาษีของแต่ละสาขา (HR ธรรมดาเข้าไม่ได้)
หมายเหตุเรื่องตำแหน่ง "HR"ระบบเขียนโค้ดเผื่อตำแหน่ง hr ไว้เป็นทางเลือกในหลายหน้า แต่ในทะเบียนตำแหน่งมาตรฐานยังไม่มีตำแหน่งนี้ให้เลือกจริงตอนสร้างพนักงาน — ในทางปฏิบัติงานอนุมัติและจัดการบุคคลทั้งหมดจึงตกอยู่กับ admin/super_admin ถ้าต้องการแยกฝ่ายบุคคลจากผู้ดูแลระบบสายเทคนิค ต้องตั้งตำแหน่งนั้นเป็น admin (ได้สิทธิ์ด้านอื่นติดมาด้วยทั้งหมด)
🧮

ฝ่ายบัญชี

ภาษี ใบกำกับ AP/AR ปิดงวดบัญชี

เมนูของคุณ

รายงาน ค้างชำระ (AR) บัญชี (7 หมวดย่อย) รวมการอนุมัติ

เข้าจากเมนู หลังบ้าน → บัญชี (เมนูย่อยกางออก 7 หัวข้อ) — โมดูลนี้เป็นโมดูลเสริมที่คลินิกอาจเปิด/ปิดได้ ทุกหน้าย่อยกรองข้อมูลตามสาขาที่กำลังดูอยู่อัตโนมัติ ต้องมีสิทธิ์ระดับแอดมิน/ผู้ดูแลระบบ

กรณีโมดูลบัญชียังไม่เปิดใช้งานคลินิกใหม่ยังไม่ได้เปิดโมดูลบัญชี (ยังไม่จด VAT) → เข้าหน้าใดในกลุ่มนี้ก็ตามจะเห็นการ์ดกลางจอ "โมดูลบัญชียังไม่ได้เปิดใช้งานสำหรับคลินิกนี้" แทนที่เนื้อหาปกติทั้งหน้า ปุ่มสร้าง/แก้ไขทุกอย่างในหน้านั้นจะไม่แสดงด้วย ไม่ใช่แค่ตารางว่างเฉยๆ

2.1 ใบกำกับภาษี (/accounting/tax-invoices)

สิทธิ์ accounting.taxinvoice.view · การ์ด KPI 4 ใบ · ตัวกรองเป็นงวดภาษี (เดือน+ปี พ.ศ.) ไม่ใช่ช่วงวันที่อิสระ — กรองตามเดือนที่ออกเอกสารภาษี

ตัวอย่างหน้าตา: ป้ายประเภทใบกำกับ + ปุ่ม Export + KPI ภาษีขาย
ภาษีขาย (Output VAT)
฿12,460
เต็มรูป อย่างย่อ Export Excel
กรณีตัวอย่าง

บัญชีปิดงวดภาษีเดือนที่แล้ว ต้องรวบรวมใบกำกับภาษีทั้งหมดเพื่อยื่น ภ.พ.30 — เลือกงวดภาษี ตารางแสดงรายการเรียงตามเลขที่เอกสาร/วันที่/ลูกค้า (ลูกค้าไม่มีชื่อขึ้น "ลูกค้าทั่วไป (walk-in)")/ฐานภาษี/VAT/รวม/ประเภท (เต็มรูป/อย่างย่อ) → คลิก "รายละเอียด" ดูรายการก่อนยื่น → Export Excel เก็บเป็นไฟล์แนบยื่นสรรพากร

2.2-2.3 ตั้งค่า VAT + ตั้งค่าการบัญชี

สิทธิ์ accounting.vat.config — มีแถบเตือนว่าการแก้ไขมีผลทางกฎหมาย ต้องตรวจกับนักบัญชีก่อนบันทึกเสมอ

ตัวอย่างหน้าตา: สวิตช์จดทะเบียน VAT + ฟอร์ม field + แถบเตือนผลทางกฎหมาย
⚠️ การแก้ไขมีผลทางกฎหมาย — ตรวจกับนักบัญชีก่อนบันทึกทุกครั้ง
จดทะเบียนภาษีมูลค่าเพิ่ม — เปิด
อัตรา VAT7%
เลขผู้เสียภาษี (13 หลัก)0 1055 xxxxx xx x
กรณีตัวอย่าง

จดทะเบียน VAT ครั้งแรก — เปิดสวิตช์ "จดทะเบียนภาษีมูลค่าเพิ่ม" ระบบเปิดให้กรอกฟิลด์ที่เหลือ: อัตรา VAT (เริ่มต้น 7%), วันที่มีผล, เลขประจำตัวผู้เสียภาษี 13 หลัก (เช็ครูปแบบให้ ไม่ครบฟ้อง error ทันที), ชื่อนิติบุคคล, ที่อยู่ → บันทึก → รายการใหม่โผล่ในตาราง "ประวัติการแก้ไข" พร้อมชื่อผู้แก้ไข+เวลา

ต้องการออกใบกำกับภาษีย้อนหลัง (บิลเก่าก่อนวันที่ตั้งค่า VAT มีผล) — หน้านี้ไม่มีปุ่มสั่ง backfill ให้กด ต้องประสานทีมเทคนิคทำ migration/replay ฝั่งหลังบ้านโดยตรง

กรณีตัวอย่าง

ล็อกงวดบัญชี — ปิดงบเดือนที่แล้วเสร็จ ไม่ต้องการให้ใครลงบัญชีย้อนหลังเข้าเดือนนั้น → เลือกเดือน/ปี กด "ล็อกงวดนี้" (มีแถบเตือน "อย่าล็อกงวดที่ยังมีรายการขายค้างลงบัญชี") → เดือนนั้นไปปรากฏในตารางงวดที่ล็อกพร้อมวันที่+ผู้ล็อก — พบบิลตกหล่นต้องลงย้อนหลัง กด "ปลดล็อก" ต้องยืนยันก่อนปลดจริง

เกณฑ์อายุลูกหนี้: เปลี่ยนจาก "วันที่ทำรายการ" เป็น "วันครบกำหนดชำระ" ระบบขึ้นข้อความกำกับว่า "เร็วๆ นี้" ยังไม่รองรับจริง — แม้เลือกไว้ รายงาน AR Aging ยังคำนวณตาม txn_date เหมือนเดิม วิธีคิดต้นทุน: เปลี่ยนดรอปดาวน์เป็นค่าอ้างอิงเท่านั้น ไม่ส่งผลต่อการคำนวณ COGS จริง — บัญชีต้องรู้ว่าเป็นแค่ป้ายกำกับแสดงผล

VAT ตอนแปลงแพ็คเกจเป็นเครดิต: เลือกไว้ล่วงหน้าว่าจะจัดการแบบ "ออกใบลดหนี้ (Credit Note)" (ลดยอดขาย/ภาษีขายเดิม ออกเครดิตใหม่ — เหมาะคลินิกจด VAT) หรือ "โอนภายใน (Internal Transfer)" (ย้ายมูลค่าคงเหลือเป็นเครดิตโดยไม่แตะภาษีขายเดิม)

ตัวอย่างหน้าตา: ตั้งค่าการบัญชี — สวิตช์ลง GL อัตโนมัติ + ดรอปดาวน์วิธีคิดต้นทุน
ออกใบกำกับ/ลง GL อัตโนมัติเมื่อขาย
วิธีคิดต้นทุน (ป้ายแสดงผล)ต้นทุนถัวเฉลี่ยถ่วงน้ำหนัก
VAT ตอนแปลงแพ็คเกจเป็นเครดิตออกใบลดหนี้ (Credit Note)

"วิธีคิดต้นทุน" เป็นป้ายแสดงผลเท่านั้น (ไม่เปลี่ยน COGS จริง) · เกณฑ์อายุลูกหนี้ "วันครบกำหนด" = "เร็วๆ นี้" ยังไม่รองรับ

2.4 ภ.พ.30 (/accounting/pp30)

สิทธิ์ accounting.report.view · ตัวกรองเดือน+ปี (พ.ศ.) · การ์ด KPI 4 ใบ

ตัวอย่างหน้าตา: ภ.พ.30 — KPI ภาษีขาย/ยอดขาย + ปุ่ม CSV
ภาษีขาย (Output VAT)
฿12,460
ยอดขาย (ไม่รวม VAT)
฿178K
CSV

"ภาษีขาย (Output VAT)" = ตัวเลขหลักกรอกในแบบ · ตาราง "รายละเอียดรายวัน" ตรวจไขว้ไม่ให้วันไหนขาด

ตัวอย่างหน้าตา: ล็อกงวดบัญชี (toggle/ปุ่มล็อก-ปลดล็อก)
งวดมิ.ย. 2569
ล็อกงวดนี้ อย่าล็อกงวดที่ยังมีรายการค้างลงบัญชี

ล็อกงวด = กันลงบัญชีย้อนหลังเข้าเดือนนั้น · พบบิลตกหล่นต้องกด "ปลดล็อก" (ยืนยันก่อน) จึงลงย้อนได้

กรณีตัวอย่าง

ทุกวันที่ 15 ของเดือนต้องยื่นแบบ ภ.พ.30 — เลือกเดือน/ปีที่จะยื่น เห็นการ์ด "ภาษีขาย (Output VAT)" เป็นตัวเลขหลักที่ต้องกรอกในแบบฟอร์ม เลื่อนดูตาราง "รายละเอียดรายวัน" ตรวจสอบไขว้ไม่มีวันไหนขาดหาย → กด "CSV" ดาวน์โหลดไฟล์แนบยื่นแบบ

2.5 ใบแจ้งหนี้ซื้อ (AP) (/accounting/ap-bills)

สิทธิ์ accounting.ap.view — หน้านี้มีทั้งดู/สร้าง/อนุมัติ สถานะบิล: ร่าง → จับคู่แล้ว/ไม่ตรง → อนุมัติแล้ว → จ่ายแล้ว

ตัวอย่างหน้าตา: สถานะบิล AP (ร่าง→จับคู่→อนุมัติ→จ่าย) + ผล 3-Way Match
ร่าง จับคู่แล้ว อนุมัติแล้ว จ่ายแล้ว
3-Way ตรงกัน จำนวนไม่ตรง เกินมูลค่า PO
รัน 3-Way Match บันทึกการจ่าย + WHT

3-Way Match เทียบใบแจ้งหนี้ ↔ PO ↔ GR · ผลไม่ตรง (อำพัน/แดง) ต้องเคลียร์ก่อนอนุมัติ · จ่ายแล้ว = หัก WHT พร้อมกัน

กรณีตัวอย่าง — วงจรเต็ม 3-way match
  1. สร้างใบแจ้งหนี้: ได้รับใบแจ้งหนี้จากผู้จัดจำหน่ายยา → "สร้างใบแจ้งหนี้" เลือกผู้จัดจำหน่าย+เลขอ้างอิง PO/GR → กรอกตารางรายการ (รหัส/ชื่อ/จำนวน/ราคา/VAT%/WHT%) ระบบคำนวณสรุปยอดสดขณะกรอก → บิลเข้าสถานะร่าง
  2. รัน 3-Way Match: กด "รัน 3-Way Match" เทียบใบแจ้งหนี้กับ PO และ GR ผลลัพธ์ 1 ใน 5: ตรงกัน (เขียว) / จำนวนไม่ตรง (อำพัน) / ราคาไม่ตรง (อำพัน) / เกินมูลค่า PO (แดง) / ยังไม่รับสินค้า (แดง) — ผลไม่ตรงต้องตรวจกับคลัง/ผู้จัดจำหน่ายก่อนไปขั้นถัดไป
  3. อนุมัติ: บิลสถานะ "จับคู่แล้ว" กด "อนุมัติ" → เข้าสถานะ "อนุมัติแล้ว" พร้อมจ่ายได้
  4. บันทึกการจ่าย + WHT: กด "บันทึกการจ่าย + WHT" → บิลเข้าสถานะ "จ่ายแล้ว" WHT ที่หักไว้บันทึกพร้อมกันในขั้นนี้ (ดูสรุปที่รายงาน ภ.ง.ด.3/53 ต่อ)

2.6-2.8 WHT + AR/AP Aging

2.6 ภ.ง.ด.3/53 (WHT) (/accounting/wht-report) — สิทธิ์ accounting.report.view เป็น WHT ฝั่งเจ้าหนี้/ซื้อ (คนละหน้ากับ WHT เงินเดือนพนักงานที่อยู่ในเมนู HR)

ตัวอย่างหน้าตา: รายงาน WHT — ดรอปดาวน์ ภ.ง.ด.3/53 + KPI ภาษีหัก + CSV
ประเภทแบบภ.ง.ด.53 (นิติบุคคล)
ฐานภาษีรวม
฿84,000
ภาษีหัก ณ ที่จ่าย
฿2,520
CSV ยื่นสรรพากร

WHT ฝั่งเจ้าหนี้/ซื้อ (คนละหน้ากับ WHT เงินเดือน HR) · ภ.ง.ด.3 = บุคคลธรรมดา · ภ.ง.ด.53 = นิติบุคคล

กรณีตัวอย่าง

สิ้นเดือนต้องยื่น ภ.ง.ด.53 สำหรับผู้จัดจำหน่ายนิติบุคคลที่ถูกหัก WHT จากบิล AP → เลือกดรอปดาวน์ "ภ.ง.ด.53 (นิติบุคคล)" เลือกเดือน/ปี ดู KPI 3 ใบ (จำนวนรายการ/ฐานภาษีรวม/ภาษีหักรวม) ตรวจตารางรายผู้ถูกหัก → "CSV ยื่นสรรพากร" — ออกหนังสือรับรองให้บุคคลธรรมดาแทน สลับดรอปดาวน์เป็น "ภ.ง.ด.3 (บุคคลธรรมดา)"

2.7 ลูกหนี้ค้างชำระ (AR) (/accounting/ar-aging) สิทธิ์ reports.ar.view — รายงานฝั่งบัญชี แยกช่วงอายุหนี้มาตรฐาน คนละหน้ากับ "ค้างชำระ (AR)" ปฏิบัติการ (1.2) ซึ่งเป็นมุมหน้าร้าน

ความต่างสำคัญ"ค้างชำระ (AR)" ปฏิบัติการอ่านจากยอดที่ลูกค้าจ่ายไม่ครบในระบบขาย (partial payment) เพื่อให้แคชเชียร์ตามหนี้เชิงปฏิบัติการ ส่วน "ลูกหนี้ค้างชำระ (AR)" ฝั่งบัญชีเป็นรายงานมาตรฐานทางบัญชีตามหลักคิดต้นทุน/ครบกำหนดชำระ (aging buckets: ปัจจุบัน+1–30/31–60/61–90/เกิน 90 วัน) — ตัวเลขทั้งสองหน้าอาจไม่เท่ากันเป๊ะ เพราะมองจากมุมและฐานข้อมูลคนละชุด บัญชีควรใช้หน้านี้เป็นหลักสำหรับปิดงบ
ตัวอย่างหน้าตา: ตารางอายุหนี้ (AR/AP Aging buckets) + KPI WHT
เจ้าหนี้/ลูกหนี้ปัจจุบัน1–3031–60เกิน 90
บจก. เมดิคอล฿12,000฿8,000฿5,000
หจก. ฟาร์มา฿3,400฿1,200
ฐานภาษี WHT รวม
฿84,000
ภาษีหัก ณ ที่จ่าย
฿2,520

แยกช่วงอายุหนี้ ปัจจุบัน/1–30/31–60/61–90/เกิน 90 วัน · เกิน 90 (แดง) = เร่งจ่าย/ตาม · KPI WHT ยื่น ภ.ง.ด.3/53

2.8 อายุหนี้เจ้าหนี้ (AP Aging) (/accounting/ap-aging) สิทธิ์ accounting.ap.view — ตรงข้าม AR Aging (ฝั่งที่คลินิกเป็นหนี้ผู้จัดจำหน่าย)

กรณีตัวอย่าง

วางแผนกระแสเงินสดเดือนหน้า ต้องรู้ว่าต้องจ่ายผู้จัดจำหน่ายรายไหนก่อน → เปิดหน้านี้ดูวันที่ "ณ วันที่:" กำกับความสด ตารางแยกเจ้าหนี้ตามช่วงอายุหนี้ — เจ้าหนี้ค้างเกิน 90 วันควรรีบจ่ายก่อนเสียเครดิต → export Excel ส่งผู้จัดการอนุมัติแผนจ่ายเงินก่อนโอน

สรุปเส้นทางเข้าถึง (Quick reference)

หน้าจอเส้นทางสิทธิ์
ใบกำกับภาษี/accounting/tax-invoicesaccounting.taxinvoice.view
ตั้งค่า VAT/accounting/vat-settingsaccounting.vat.config
ตั้งค่าการบัญชี/accounting/settingsaccounting.vat.config
ภ.พ.30/accounting/pp30accounting.report.view
ใบแจ้งหนี้ซื้อ (AP)/accounting/ap-billsaccounting.ap.view
ภ.ง.ด.3/53 (WHT)/accounting/wht-reportaccounting.report.view
ลูกหนี้ค้างชำระ (AR) บัญชี/accounting/ar-agingreports.ar.view
อายุหนี้เจ้าหนี้ (AP Aging)/accounting/ap-agingaccounting.ap.view
📊

ผู้จัดการ

ภาพรวมธุรกิจ คุมการอนุมัติ ติดตามลูกค้า

เมนูของคุณ

รายงาน รวมการอนุมัติ วงเงินใกล้หมดอายุ

ผู้จัดการดูภาพรวมธุรกิจ จัดคิวอนุมัติของทุกแผนก และติดตามวงเงินลูกค้าใกล้หมดอายุ — หน้าที่เฉพาะฝั่งบัญชี (ใบกำกับภาษี/ภ.พ.30/AP 3-way match ฯลฯ) อยู่ที่การ์ด "ฝ่ายบัญชี" ผู้จัดการเห็นเมนู "บัญชี" ได้เฉพาะกรณีมีสิทธิ์ accounting.report.view เพิ่มเติม (ปกติจำกัดไว้ให้บัญชี/แอดมิน) ทั้งหมดอยู่ในเมนูซ้ายกลุ่ม "หลังบ้าน" ต้องมีสิทธิ์ระดับแอดมิน/ผู้จัดการขึ้นไป ยกเว้น วงเงินใกล้หมดอายุ ที่พนักงานขายเห็นได้ด้วย

1.1 รายงาน (/reports)

สิทธิ์ reports.view — หน้าเดียวรวม 7 แท็บ + แดชบอร์ดวิเคราะห์ ตัวกรองช่วงวันที่เป็นชิปปุ่มใช้ร่วมกันทุกแท็บ (วันนี้/เมื่อวาน/สัปดาห์นี้/เดือนนี้/90 วัน/ปีนี้/กำหนดเอง)

ตัวอย่างหน้าตา: ชิปกรองช่วงวันที่ + แถบแท็บรายงาน 7 แท็บ
วันนี้ สัปดาห์นี้ เดือนนี้ 90 วัน ปีนี้ กำหนดเอง
ภาพรวม วิเคราะห์กำไร บันทึกรายการ ค่ามือ/คอมฯ

ชิปช่วงวันที่ใช้ร่วมทุกแท็บ · แดชบอร์ดวิเคราะห์มีแถบ "เทียบกับ:" (ช่วงก่อน/ปีก่อน/เลือกเอง)

แท็บภาพรวม — การ์ด KPI 4 ใบ (รายได้รวม/COGS/ค่าใช้จ่ายรวม/กำไรสุทธิ) + สถานะคลัง + สัดส่วนรายได้สินค้า vs บริการ

ตัวอย่างหน้าตา: การ์ด KPI แท็บภาพรวม + ลูกศรเทียบช่วง
รายได้รวม
฿1.24M
▲ 8.4% vs สัปดาห์ก่อน
ต้นทุน (COGS)
฿380K
▲ 14% ↑
กำไรสุทธิ
฿420K
▼ 3.1%

ลูกศรเขียวขึ้น/แดงลง เทียบช่วงก่อนหน้า · COGS พุ่ง (ส้ม/แดง) → ดู "สถานะคลัง" ด้านล่างประกอบ

กรณีตัวอย่าง

เปิดหน้ารายงานทุกเช้าจันทร์ เลือกชิป "สัปดาห์นี้" เทียบกับ "เดือนนี้" ที่ดูเมื่อวันศุกร์ → เห็นการ์ด "กำไรสุทธิ" ลดลงเพราะ "ต้นทุนสินค้า (COGS)" พุ่งสีส้ม → ดูส่วนล่าง "สถานะคลังสินค้า" เห็นการ์ด "สินค้าใกล้หมด" ขึ้นแดง → กด "จัดการคลังสินค้า →" ตรวจว่าเป็นการเติมสต๊อกก้อนใหญ่หรือของหาย

แท็บวิเคราะห์กำไร — ตารางกำไร/ขาดทุนรายวัน + ตารางประสิทธิภาพรายการสินค้า

กรณีตัวอย่าง

สงสัยว่าวันไหนกำไรติดลบ → ไล่หาแถวที่ "อัตรากำไร" ติดลบ (สีแดง) → เลื่อนดูตาราง "ประสิทธิภาพรายการสินค้า" ว่าวันนั้นขายรายการที่ต้นทุนสูงกว่าราคาขายหรือไม่ (โปรลดราคาแรงเกินจุดคุ้มทุน) → ใช้เป็นหลักฐานคุยทีมขายเรื่องส่วนลด

แท็บบันทึกรายการ — รายงานยอดรับชำระทุกบิลในช่วงเวลา

กรณีตัวอย่าง

ลูกค้าโทรมาทวงใบเสร็จ → พิมพ์ HN ในช่อง "ค้นหา HN..." → คลิกรหัสบิล: ถ้าผูกกับเคสเปิดหน้า EMR ให้ทันที ถ้าไม่ผูก (walk-in ไม่เปิด OPD) เปิดหน้าต่างสรุปบิลแทน → ติ๊ก "รวมรายการในบิล (xlsx)" แล้ว export Excel เก็บเป็นหลักฐาน

แท็บค่ามือ/คอมมิชชั่น — 2 แท็บย่อย: ก) รายงานค่ามือ (ค่ามือ (DF) ระบบคำนวณและตั้งจ่ายอัตโนมัติ — accrue เข้าเงินเดือน/เจ้าหนี้ — ไม่ต้องกรอก Excel เพิ่ม กรอกซ้ำเสี่ยงจ่ายหมอซ้ำ คอลัมน์ "ค่ามือ" ที่เห็นว่างในสลิปคือ "แสดงผลว่าง" ไม่ใช่ "ยังไม่ได้คำนวณ") ข) สรุปคอมมิชชั่น (การ์ด KPI 3 ใบ: สะสม/จ่ายแล้ว/ค้างจ่าย)

ตัวอย่างหน้าตา: สรุปคอมมิชชั่น KPI 3 ใบ + ปุ่ม "บันทึกการจ่ายเงิน" (เฉพาะแถวค้างจ่าย)
คอมฯ สะสม
฿84,000
จ่ายแล้ว
฿62,000
ค้างจ่าย
฿22,000
บันทึกการจ่ายเงิน

ปุ่ม "บันทึกการจ่ายเงิน" เปิดเฉพาะแถวที่มียอดค้างจ่าย > 0 · ค่ามือ (DF) ระบบ accrue อัตโนมัติ ห้ามกรอก Excel ซ้ำ

กรณีตัวอย่าง

จ่ายคอมมิชชั่นพนักงานขายทุกสิ้นเดือน → ดูตาราง "สรุปรายชื่อพนักงานและค่าคอมมิชชั่น" หาแถวคอลัมน์ "ค้างจ่าย" > 0 → ปุ่ม "บันทึกการจ่ายเงิน" เปิดใช้งานเฉพาะแถวที่มียอดค้างจ่ายจริง (แถวจ่ายครบแล้วปุ่มปิด) → กดบันทึก → export Excel ทั้งตารางเก็บเป็นหลักฐานจ่าย

แท็บจัดการค่าใช้จ่าย — บันทึก/ดูค่าใช้จ่ายดำเนินงาน กด "เพิ่มค่าใช้จ่าย" กรอกประเภท+จำนวน+วันที่+หมายเหตุ → "ยืนยันบันทึกค่าใช้จ่าย" → ขึ้นตารางทันทีแสดง -฿ สีแดง บันทึกผิดกดถังขยะลบออกได้ทันที (ไม่มีขั้นตอนขออนุมัติลบ)

ตัวอย่างหน้าตา: เพิ่มค่าใช้จ่าย (ฟอร์ม) + แถวค่าใช้จ่าย (-฿ สีแดง)
ประเภทค่าเช่า
จำนวน฿35,000
ยืนยันบันทึก
ค่าเช่า · ก.ค.−฿35,000

บันทึกแล้วขึ้นตารางทันที (-฿ แดง) · บันทึกผิดกดถังขยะลบได้เลย (ไม่มีขั้นตอนขออนุมัติลบ)

แท็บรายงานแยกตามหมวด — เมนูซ้าย 10 รายงาน เช่น "รายงานวงเงินลูกค้า" (แยกกระเป๋าเงินจริง/โบนัส) และ "รายงานการใช้จ่ายลูกค้า" (ความถี่ต่อลูกค้า) ใช้ประกอบตัดสินใจอนุมัติแคมเปญหรือส่ง SMS กระตุ้น

แท็บแดชบอร์ดวิเคราะห์ — 8 มุมมอง มุมมองแรก "ภาพรวมธุรกิจ" ต้องมีสิทธิ์ report.overview.view เพิ่มเติม (แยกจาก reports.view) ไม่มีสิทธิ์นี้ปุ่มมุมมองนี้ไม่ปรากฏเลยและระบบเปิดมุมมอง "วิเคราะห์ผู้ป่วย" เป็นค่าเริ่มต้นแทน — ทุกมุมมอง (ยกเว้น "ภาพรวมธุรกิจ") มีแถบ "เทียบกับ:" 3 แบบ: ช่วงก่อนหน้า (เท่ากัน) / ช่วงเดียวกันปีก่อน / เลือกเอง

กรณีตัวอย่าง (โหมดเปรียบเทียบ)

อยากรู้ว่ายอดขายเดือนนี้ดีกว่าเดือนที่แล้วไหม → เลือกมุมมอง "วิเคราะห์รายรับ" → "ช่วงก่อนหน้า (เท่ากัน)" → ระบบเทียบช่วงยาวเท่ากันก่อนหน้าทันที เห็นลูกศรขึ้น/ลงข้าง KPI พร้อมแคปชันบอกวันที่จริงทั้ง 2 ฝั่ง — เทียบเทศกาลปีที่แล้ว (สงกรานต์ปีนี้กับปีก่อน) เปลี่ยนเป็น "ช่วงเดียวกันปีก่อน" หรือเทียบเดือนใดก็ได้ที่ไม่ติดกัน เลือก "เลือกเอง"

กรณีตัวอย่าง (ช่วงยังไม่มีข้อมูล)

พลาดเลือกช่วงเดือนหน้า (ยังไม่ถึงวันที่นั้น) → ระบบขึ้นแถบ "ช่วงที่เลือกยังไม่มีข้อมูล — ข้อมูลล่าสุดถึง [เดือน/ปี]" พร้อมลิงก์ "ไปเดือนล่าสุดที่มีข้อมูล" → กดลิงก์พาไปเดือนที่มีข้อมูลจริงอัตโนมัติ ไม่ต้องกดวันที่เอง

1.2 ค้างชำระ (AR) — มุมปฏิบัติการ (/ar-outstanding)

สิทธิ์ reports.ar.view · read-only — คนละมุมกับ "ลูกหนี้ค้างชำระ (AR)" ในเมนูบัญชี (รายงานฝั่งบัญชี/ภาษี)

ตัวอย่างหน้าตา: ตารางค้างชำระ (อายุหนี้ + ป้ายเกิน 90 วัน) + Export
ลูกค้าค้างชำระ
14 ราย
ลูกค้ายอดค้างค้างเก่าสุดอายุ
สมหญิง ใจดี฿5,00098 วันเกิน 90
Export Excel

read-only ("ดู" เพื่อวางแผนตามหนี้) · เรียงตามอายุหนี้ เกิน 90 วัน (แดง) โทรทวงก่อน · ปรับยอดต้องไปที่เคส/POS

กรณีตัวอย่าง

เห็นการ์ด KPI "ลูกค้าค้างชำระ" ขึ้นสีแดง (มากกว่า 0 ราย) → ดูตารางเรียงตาม "อายุหนี้" หาแถวป้ายแดง "เกิน 90 วัน" ก่อน → คอลัมน์ "ค้างเก่าสุด" บอกจำนวนวัน+วันที่ค้างมานานสุด → สั่งแคชเชียร์โทรทวงตามรายชื่อนี้ก่อน → Export Excel ส่งทีมเก็บเงินตามตัวกรองที่ใช้อยู่

หน้านี้ไม่มีปุ่มแก้ไข/บันทึกใดๆ — ต้องการปรับยอดค้างหรือรับชำระเพิ่ม ต้องไปทำที่หน้าเคส/POS โดยตรง หน้านี้แค่ "ดู" เพื่อวางแผนตามหนี้เท่านั้น

1.3 วงเงินใกล้หมดอายุ (/reports/wallet-expiring)

สิทธิ์ wallet.report.view (พนักงานขายเห็นได้ด้วย ไม่ได้จำกัดเฉพาะผู้จัดการ) เข้าได้อีกทางจากการ์ดแจ้งเตือนสีม่วงบนแดชบอร์ดหลัก

ตัวอย่างหน้าตา: ตารางวงเงินใกล้หมดอายุ + ปุ่ม "ขายวงเงิน" ท้ายแถว
ภายใน 7 วัน ภายใน 30 วัน
ลูกค้าคงเหลือเหลือ (วัน)
อรุณ พงษ์ทอง฿4,5005 วันขายวงเงิน

"ขายวงเงิน" ท้ายแถว → พาไป POS พร้อมพรีฟิลชื่อ · "หมดอายุแล้ว" = ระงับใช้ (stamp) ไม่ตัด/ลบเงินออก

กรณีตัวอย่าง

เห็นการ์ดแจ้งเตือน "วงเงินใกล้หมดอายุ · N รายการหมดอายุใน 30 วัน" บนแดชบอร์ดหลัก → คลิกเข้ามาที่หน้านี้ → เลือกตัวกรอง "ภายใน 7 วัน" ดูกลุ่มเร่งด่วนที่สุด → เห็นสถานะ "ใกล้หมดอายุ" (เหลือง) กับ "หมดอายุแล้ว" (แดง — ระงับแล้ว ใช้ไม่ได้) คอลัมน์ "เหลือ (วัน)" ≤7 วันขึ้นแดงพิเศษ → กด "ขายวงเงิน" ท้ายแถวพาลูกค้าคนนั้นไปหน้า POS พร้อมพรีฟิลชื่อชวนซื้อวงเงินใหม่ก่อนของเดิมหมด

วงเงินที่ "หมดอายุแล้ว" ระบบแค่ระงับการใช้ ไม่ได้ตัดยอด/ลบเงินออกจากบัญชีลูกค้า (stamp-ระงับจ่าย ไม่ drain) — ลูกค้าต่อรองขอต่ออายุต้องทำผ่านขั้นตอนพิเศษ ไม่ใช่จากหน้ารายงานนี้

1.4 รวมการอนุมัติ (/approvals)

เข้าเมนูได้ต้องเป็นแอดมิน/ผู้ดูแลระบบ หรือผู้จัดการ (managerAllowed) — แต่การอนุมัติจริงแต่ละแท็บขึ้นกับนโยบายอนุมัติที่ตั้งไว้ (ตั้งค่าที่ สิทธิ์การใช้งาน › การอนุมัติ) ไม่ใช่ค่าคงที่ รวมคำขออนุมัติจากทุกโมดูลไว้จุดเดียวเป็น 3 แท็บ

ตัวอย่างหน้าตา: ตัวเลขรออนุมัติบนเมนู + ปุ่มอนุมัติ/ปฏิเสธ + toast
รวมการอนุมัติ 4
อนุมัติ ปฏิเสธ
อนุมัติแล้ว — ย้ายยอดขาย/คอมมิชชั่นให้เรียบร้อย
แท็บ "เปลี่ยนเซลล์"

ผู้อนุมัติ: Sale Director/ผู้ดูแลระบบ — พนักงานขายขอเปลี่ยนเซลล์ผู้ดูแลเคสจากคนเดิมไปอีกคน → เห็นรายการเคส+ชื่อเซลล์เดิม(ขีดฆ่า)→ชื่อใหม่+เหตุผล+"ขอโดย...· N นาทีที่แล้ว" → กด อนุมัติ ระบบย้ายยอดขาย/คอมมิชชั่นทันที หรือ ปฏิเสธ คงเซลล์เดิม — คำขอจากตะกร้า POS ก่อนเปิดเคส (ลูกค้ายังไม่ลงทะเบียน OPD) ขึ้นข้อความ "ยังไม่เปิดเคส — อนุมัติล่วงหน้าได้ ระบบจะผูกให้เมื่อเปิดเคส" อนุมัติได้ทันทีโดยไม่ต้องรอเปิดเคสก่อน

แท็บ "รับเข้าคลัง"

ผู้อนุมัติ: หัวหน้าคลัง/ผู้ดูแลระบบ — คลังรับสินค้าเข้าแล้วส่งเข้าคิวตรวจสอบ → เห็นเลขที่ใบรับ/เลข PO อ้างอิง/ชื่อผู้จัดจำหน่าย/จำนวนรายการ/ยอดรวม → ตรวจว่าจำนวน/ราคาตรงกับที่สั่งจริงหรือไม่ → กด อนุมัติ สินค้าจึงเข้าสต๊อกใช้งานได้จริง (ก่อนอนุมัติยังไม่นับเป็นสต๊อกพร้อมขาย) หรือ ปฏิเสธ ถ้ารายการผิดให้คลังแก้ใหม่

แท็บ "แก้บิลหลังปิด"

ผู้อนุมัติ: ผู้ดูแลระบบ — พนักงานพบบิลปิดไปแล้วเมื่อวานคิดราคาผิด ขอแก้ย้อนหลัง → เห็นป้ายประเภทการแก้ไข (แก้ราคารายการ/แก้ยอดสุทธิทั้งบิล/เพิ่มรายการย้อนหลัง)+เคสที่เกี่ยวข้อง+เหตุผล+ค่า "ก่อน→หลัง" เทียบให้เห็นชัด → กด อนุมัติ ระบบเล่นซ้ำ (replay) การแก้ไขผ่านขั้นตอนคำนวณปกติ (ปรับยอดเงิน/สต๊อก/รายงานอัตโนมัติ) หรือ ปฏิเสธ บิลเดิมคงเดิม

กรณีตัวอย่าง — ไม่มีสิทธิ์อนุมัติแท็บนั้น (แสดงล็อก ไม่ซ่อนเงียบ)

เปิดหน้า "รวมการอนุมัติ" เข้ามาได้ (ผ่านเกณฑ์ managerAllowed) แต่คลินิกยังไม่ตั้งชื่อผู้จัดการคนนี้เป็นผู้อนุมัติของแท็บ "แก้บิลหลังปิด" → แท็บยังคงปรากฏ (ไม่หายไป) แต่เปิดเข้าไปเห็นไอคอนกุญแจพร้อมข้อความ "บัญชีของคุณยังไม่ได้ถูกกำหนดให้อนุมัติการแก้บิลหลังปิด — ตั้งค่าได้ที่ สิทธิ์การใช้งาน › การอนุมัติ" ต้องขอให้แอดมินเพิ่มชื่อในนโยบายอนุมัติก่อน

ข้อจำกัดเฉพาะ: แท็บ "เปลี่ยนเซลล์" และ "แก้บิลหลังปิด" ฝั่งเซิร์ฟเวอร์บังคับเป็นผู้ดูแลระบบเท่านั้นโดยปริยาย (ไม่ว่านโยบายจะเปิดให้ role อื่นหรือไม่) — ถ้าไม่มีสิทธิ์อนุมัติแม้แต่แท็บเดียว หน้าทั้งหมดจะแสดงข้อความกลาง "คุณยังไม่มีสิทธิ์อนุมัติรายการใด ๆ" แทนที่แท็บทั้งหมด

1.5 ส่งต่อคนไข้เครือข่าย (/customers/referral) — เฉพาะคลินิกที่เปิด binding

สิทธิ์ binding.referral.manage — เมนูปรากฏเสมอ (ไม่ซ่อนเงียบ) แต่เนื้อหาแสดงสถานะ "ยังใช้ไม่ได้" ถ้ายังไม่ผ่านเงื่อนไข: (1) คลินิกต้องเชื่อมเครือข่าย (binding) กับคลินิกอื่นและสถานะ active (2) ต้องตั้งนโยบาย "การแชร์ข้อมูลคนไข้" เป็น Referral

ตัวอย่างหน้าตา: สถานะใบส่งต่อคนไข้ (ร่าง→ยินยอม→ส่งแล้ว→รับเข้า) + ปุ่มบันทึกยินยอม
ร่าง — ยังไม่ยินยอม ยินยอมแล้ว — พร้อมส่ง ส่งแล้ว · รอตอบรับ รับเข้าแล้ว
บันทึกความยินยอม

ต้องบันทึกยินยอม (วาจา/เอกสาร/ดิจิทัล) ก่อนส่ง · ส่งเฉพาะฟิลด์ที่ต้นทางเลือก (whitelist) ปลายทางไม่เห็นประวัติทั้งหมด

กรณีตัวอย่าง (ส่งต่อคนไข้ออก)

คนไข้ต้องการทำหัตถการที่คลินิกนี้ไม่มีเครื่องมือ แต่สาขาเครือข่ายมี → เปิดแท็บ "ส่งออก" สร้างใบส่งต่อ ต้องบันทึกความยินยอมก่อน (วาจา/เอกสาร/ดิจิทัล) — สถานะเปลี่ยนจาก "ฉบับร่าง — ยังไม่ยินยอม" (อำพัน) เป็น "ยินยอมแล้ว — พร้อมส่ง" → กดส่งจริง "ส่งแล้ว · รอตอบรับ" → ปลายทางรับเข้า "รับเข้าแล้ว" (เขียว) หรือปฏิเสธ "ปฏิเสธ" (แดง) → จบงานกด "ปิดงานแล้ว"

ข้อมูลที่ส่งออกมีเฉพาะที่คลินิกต้นทางเลือกส่ง (whitelist จากโปรไฟล์คนไข้) — คลินิกปลายทางเห็นเฉพาะฟิลด์ที่ถูกส่งมาจริง ไม่ใช่ประวัติทั้งหมด

⚙️

ผู้ดูแลระบบ / เจ้าของคลินิก

ตั้งค่าทั้งระบบ สิทธิ์ ความปลอดภัยข้อมูล

เมนูของคุณ

ตั้งค่า/ระบบ (7 หมวด) งานผู้ดูแล (Logs / ถังขยะ / Integrity) จัดการบริการ / หมวดหมู่ / แพ็กเกจ / สะสมแต้ม ทุกเมนูอื่น (เต็มสิทธิ์)

บทบาทนี้ (admin และ super_admin) เป็นบทบาทเดียวที่เข้าเมนู "ตั้งค่า/ระบบ" และ "งานผู้ดูแล" ได้ครบทุกหมวดโดยไม่ต้องมีสิทธิ์รายฟีเจอร์เพิ่ม (เป็นค่า fallback ของทุกหน้าตั้งค่า) และเป็นบทบาทเดียวที่แก้ "ตัวบทบาท"/ผู้อนุมัติของคลินิกได้ — เมนูงานประจำวัน (จอง/POS/EMR/ลูกค้า) admin เห็นเหมือนพนักงานทั่วไป หมวดที่มีป้าย "มีผลทั้งระบบ" = ตั้งจากสาขาไหนก็มีผลกับทุกสาขาพร้อมกัน ต้องระวังเป็นพิเศษ

1.1 ข้อมูลคลินิก & การชำระเงิน — มีผลทั้งระบบ

3 แท็บ: ข้อมูลคลินิก (หัวใบเสร็จ) settings.clinicprofile.manage · ธนาคารรับชำระ settings.paymentbank.manage · Void PIN settings.voidpin.manage

ตัวอย่างหน้าตา: เมนู 7 หมวดตั้งค่า (hub) + 3 แท็บย่อยด้านใน
ข้อมูลคลินิก & การชำระเงิน วงเงินลูกค้า คลังสินค้า การรักษา (EMR) ต้นทุน & ค่าตอบแทน สิทธิ์ & การแจ้งเตือน เครือข่ายคลินิก
ข้อมูลคลินิก (หัวใบเสร็จ) ธนาคารรับชำระ Void PIN

แต่ละหมวด = hub · ป้าย "มีผลทั้งระบบ" = ตั้งจากสาขาไหนก็มีผลทุกสาขาพร้อมกัน

ตัวอย่างหน้าตา: ตั้ง Void PIN + สวิตช์จดทะเบียน VAT + live preview หัวใบเสร็จ
Void PIN (4–8 หลัก)••••
ตั้งค่าแล้ว
จดทะเบียน VAT (แสดงบรรทัดภาษีบนใบเสร็จ)
AirClinic สาขาสุขุมวิท
123 ถ.สุขุมวิท · เลขภาษี 0105...

ตั้ง Void PIN ครั้งแรก = พนักงานต้องกรอกก่อนยกเลิกเคสที่ POS · แก้หัวใบเสร็จมี live preview · ใบเก่าไม่เปลี่ยนตาม

กรณีตัวอย่าง 1 — เปลี่ยนที่อยู่คลินิกก่อนพิมพ์ใบเสร็จรอบใหม่

เข้า "ข้อมูลคลินิก (หัวใบเสร็จ)" → แก้ "ที่อยู่" → ดูตัวอย่างหัวใบเสร็จ (live preview) เปลี่ยนตามทันที → บันทึก — ผลลัพธ์: ใบเสร็จที่ออกหลังจากนี้ใช้ที่อยู่ใหม่ทั้งหมด แต่ใบเสร็จเก่าที่ออกไปแล้วจะไม่เปลี่ยนตาม (ตราไว้ ณ เวลาออกใบ)

กรณีตัวอย่าง 2 — เปิดเก็บ VAT

ติ๊ก "จดทะเบียน VAT" → บันทึก — ผลลัพธ์: ใบเสร็จรอบถัดไปแสดงบรรทัดภาษี เป็นการแสดงผลเท่านั้น ไม่กระทบการคำนวณบัญชีเบื้องหลัง (ต้องไปตั้งจุดคำนวณจริงที่ "บัญชี & VAT วงเงิน" ถ้าเกี่ยวกับวงเงิน)

กรณีตัวอย่าง 3 — เปลี่ยนเขตเวลา (timezone)

เปลี่ยนค่าที่ "รูปแบบวันที่และเวลา" → ระบบขึ้นคำเตือนสีเหลืองทันที เปลี่ยนปี (พ.ศ./ค.ศ.) หรือรูปแบบวันที่มีผลทันที แต่เปลี่ยนเขตเวลาต้องแจ้งทีมเทคนิคให้ restart เซิร์ฟเวอร์ก่อนจึงจะมีผลจริง — ห้ามคิดว่ากดบันทึกแล้วจบ

เพิ่มธนาคารรับบัตรเครดิต: เพิ่มแถวรหัส+ชื่อธนาคาร → บันทึก → ขึ้นในตัวเลือกที่ POS ทันที ปุ่ม "ใช้ค่าเริ่มต้น" รีเซ็ตกลับรายการมาตรฐาน — ตั้ง Void PIN ครั้งแรก: กรอกรหัส 4–8 หลัก → บันทึก → ป้าย "ตั้งค่าแล้ว" ตั้งแต่นี้ไปพนักงานทุกคนต้องกรอก PIN ก่อนยกเลิกเคสที่ POS (ถ้ายังไม่เคยตั้งค่าเลย ระบบไม่บังคับ PIN — ควรตั้งไว้ตั้งแต่วันแรก)

1.2 วงเงินลูกค้า

กรณีตัวอย่าง

สร้างวงเงิน "VIP เลเซอร์" ใหม่ — ไป "ชนิดวงเงินลูกค้า" เพิ่มชนิดใหม่ เลือกประเภท "วงเงินจริง" (จ่ายจริง คืนได้) หรือ "วงเงินแถม" (โบนัส คืนไม่ได้ จำกัดบริการได้) ตั้งนโยบายตัดเงิน (ตัดจริงก่อนเสมอ / ตัดคู่จริง+แถมตามสัดส่วน) และนโยบายเมื่อครบกำหนด (ริบเข้ารายได้/ต่ออายุอัตโนมัติ/ส่งให้ผู้ดูแลตัดสินใจรายก้อน)

เงื่อนไขสำคัญ: เลือก "วงเงินจริง"/"วงเงินแถม" แล้วล็อกทันทีหลังสร้าง แก้ภายหลังไม่ได้ (ต้องปิดชนิดเดิมแล้วสร้างใหม่) ปิดใช้งานได้แบบ soft-delete เท่านั้น (ไม่มีปุ่มลบถาวร) — ผังบัญชี/จังหวะรับรู้ VAT ตั้งที่แท็บ "บัญชี & VAT วงเงิน" ("สำหรับนักบัญชีคลินิกตั้งเอง" ควรให้นักบัญชีตั้งไม่ใช่แอดมินเดา)

1.3 ตั้งค่าคลังสินค้า — มีผลทั้งระบบ, เฉพาะ super-admin

กรณีตัวอย่าง — คลินิกใหม่ยังไม่พร้อมนับสต็อกละเอียด

ไป "โหมดคลังสินค้า" เลือก "คลังเสมือน" แทน "คลังจริง" — ผลลัพธ์: ระบบบันทึกการจ่าย/ขายเป็น "รายงานเบิก" อย่างเดียว ไม่ตัดสต็อกจริง ไม่บล็อกแม้ของไม่พอ เหมาะช่วงเริ่มต้นที่สต็อกจริงยังอยู่นอกระบบ มีผลทันทีกับรายการถัดไป — สลับโหมดตอนมีข้อมูลค้างอยู่ต้องคิดให้รอบคอบ (คลังจริง = FEFO + บล็อกของไม่พอ)

ขายก่อนรับเข้า: เลือก 1 ใน 3 โหมด "ปิด — ของไม่พอ ขายไม่ได้" (ค่าเริ่มต้น ปลอดภัยสุด) / "เตือนแล้วให้ผ่าน" / "ต้องมีสิทธิ์จึงยืนยันได้" — ตั้งค่าระดับสาขาตัวเองเท่านั้น (ไม่ใช่ทั้งเครือข่าย)

1.4 การรักษา (EMR)

กรณีตัวอย่าง — เพิ่มฟอร์มยินยอมสำหรับหัตถการใหม่

ไป "ฟอร์มยินยอม" สร้างใหม่ (ตัว builder ลากบล็อก) จัดกลุ่มหมวด (ทั่วไป/หัตถการ/ยาชา-ระงับความรู้สึก/ภาพถ่าย PDPA) ผูก trigger กำหนดใช้ตอนไหน กรองสาขาที่ใช้ → "เผยแพร่" — ฟอร์มมีสถานะไล่ระดับ ฉบับร่าง → เผยแพร่แล้ว (แก้ไขไม่ได้อีก) → เลิกใช้ พลาดตอนร่างแก้ได้ตามใจ แต่เผยแพร่แล้วต้องโคลนเป็นเวอร์ชันใหม่ถ้าจะแก้ (กันฟอร์มที่คนไข้เคยเซ็นเปลี่ยนย้อนหลัง)

กรณีตัวอย่าง — บังคับวินัยปิดเคสให้ผู้ช่วย BT

ไป "วินัยการปิดเคส" เลือกโหมด "เตือน"/"ห้าม" เลือกบทบาทที่ตรวจ กำหนด "ค้าง" = กี่วัน + ผ่อนผันถึงกี่โมงเช้า ตั้งข้อยกเว้นรายบุคคลได้ — ผลลัพธ์: BT ที่มีเคสค้างเกินกำหนดถูกเตือน/บล็อกไม่ให้รับเคสใหม่จนกว่าจะปิดเคสค้าง ยกเว้นคนในรายชื่อข้อยกเว้น

1.5 ต้นทุน & ค่าตอบแทน

แท็บ "กฎต้นทุนซ่อนเร้น" 4 แท็บย่อย: ค่ามือหมอ (Doctor Fee) · ค่าคอมมิชชัน · ต้นทุนอื่น · คำนวนย้อนหลัง (ซ่อนถ้าไม่มีสิทธิ์ cost.recompute.run)

กรณีตัวอย่าง — ตั้งค่ามือหมอ 20% ให้แพทย์ฟรีแลนซ์

ไปแท็บ "ค่ามือหมอ" → "เพิ่มกฎค่ามือหมอ" → ตั้งชื่อกฎ, ประเภท เปอร์เซ็นต์/จำนวนเงินคงที่ ค่า 20%, เลือกหมอ, ขอบเขต, รูปแบบกระจายค่าเมื่อมีหมอหลายคนร่วมเคส, ลำดับความสำคัญ — ผลลัพธ์: คำนวณค่ามือแพทย์อัตโนมัติ พร้อมหักภ.ง.ด.3 3% ตอนจ่าย (เฉพาะฟรีแลนซ์)

กับดักระบบบล็อกถ้าสร้างกฎซ้ำ (แพทย์คนเดิม+ขอบเขตเดิมมีกฎ active อยู่แล้ว) และบล็อกถ้าเอาแพทย์ไปผูกกับแท็บ "ค่าคอมมิชชัน" แทน ("ค่าคอมมิชชันห้ามผูกกับแพทย์ที่ทำเคส")

คำนวนกำไรย้อนหลังหลังแก้กฎต้นทุน: ต้องมีสิทธิ์ cost.recompute.run ไม่งั้นแท็บนี้ไม่แสดงเลย — เป็นคำสั่งเขียนข้อมูลย้อนหลังจำนวนมาก ควรรันนอกเวลาทำการหลังยืนยันแล้วว่ากฎใหม่ถูกต้อง เพราะกระทบตัวเลขกำไรย้อนหลังทั้งช่วง

1.6 สิทธิ์ & การแจ้งเตือน

กรณีตัวอย่าง — ยกระดับแจ้งเตือน "มัดจำค้างเกิน 3 วัน" เป็นด่วน

ไป "การแจ้งเตือน" หาหัวข้อกลุ่ม "เงิน" เปลี่ยนระดับเป็น "ผิดปกติ/ด่วน" เลือกช่องทาง (ในแอป/LINE) ตั้ง threshold 3 วัน ตั้งบทบาทรับ escalation → บันทึก (ระดับสาขาตัวเอง — สาขาอื่นต้องตั้งแยก)

3 ระดับ: "กันลืม" (พนักงานปิดเสียงเองได้), "ต้องทำ" (ขึ้นกระดิ่ง+LINE ทันที ค้างจนทำจริง พนักงานปิดไม่ได้), "ผิดปกติ/ด่วน" (ปิดไม่ได้เลย ไม่มีคนรับส่งต่อขึ้นไปตามลำดับบทบาท)

ตัวอย่างหน้าตา: สวิตช์เปิด/ปิดการแจ้งเตือน + 3 ระดับความสำคัญ
แจ้งเตือนมัดจำค้างเกิน 3 วัน — เปิด
แจ้งเตือนแต้มสะสมใกล้หมดอายุ — ปิด
กันลืม ต้องทำ ผิดปกติ/ด่วน

1.7 เครือข่ายคลินิก — มีผลทั้งระบบ

กรณีตัวอย่าง — จับคู่กับคลินิกสาขาน้องใหม่ในเครือข่ายเดียวกัน

ไป "การเชื่อมต่อ" เปิดโมดัล "จับคู่คลินิก" ยืนยันจับคู่ → ฝั่งคลินิกหลักเห็นสถานะซิงก์พนักงาน (roster mirror) พร้อมปุ่ม "ซิงก์อีกครั้ง" — แท็บ "นโยบาย" เข้าไม่ได้จนกว่าจะจับคู่สำเร็จ หลังจับคู่ตั้งนโยบายแชร์ข้อมูลคนไข้ (ปิด/รวมยอด/ส่งต่อ), นโยบายสต็อก (ฝากขาย), โหมดพนักงาน (แยกกัน/มิเรอร์)

คำเตือนเปลี่ยนโหมดพนักงานมีผลทันที (ระบบเตือนให้ยืนยันก่อนเสมอ) เพราะเป็นการซิงก์/ปิดใช้งานบัญชีจริงข้ามคลินิก — ป้ายวงกลมจุดสีบนแถบบนขึ้นเฉพาะเมื่อจับคู่แล้ว (จุดเขียว=ปกติ, จุดเหลือง=รอยืนยัน/เชื่อมต่อไม่ได้)
ตัวอย่างหน้าตา: สถานะเชื่อมต่อเครือข่ายคลินิก (จุดสี) + ปุ่มจับคู่/ซิงก์
เชื่อมต่อปกติ รอยืนยัน / เชื่อมต่อไม่ได้
จับคู่คลินิก ซิงก์อีกครั้ง

จุดเขียว = เชื่อมปกติ · จุดเหลือง = รอยืนยัน/เชื่อมไม่ได้ · "มีผลทั้งระบบ" · แท็บ "นโยบาย" เข้าได้หลังจับคู่สำเร็จ

2. ป้ายกำกับลูกค้า (KOL/รีวิว)

หน้าจอ CRUD แคตตาล็อกป้ายที่แตะติดลูกค้าได้หลายอัน — read เปิดทุกคนที่เข้าแท็บนี้ได้, write ต้องมีสิทธิ์ crm.tag.manage

กรณีตัวอย่าง — เพิ่มป้าย "พันธมิตร" สีม่วง

กด "เพิ่มป้ายกำกับ" กรอกชื่อป้ายไทย (บังคับ) เว้น Key ว่างได้ (ระบบตั้งอัตโนมัติจากชื่อ) เลือกสีจากจานสี 8 สีสำเร็จรูปหรือพิมพ์ hex เอง ตั้งลำดับแสดงผล → บันทึก — ผลลัพธ์: ขึ้นเป็นตัวเลือกในฟอร์มแก้ไขลูกค้าทันที ติดได้หลายป้ายพร้อมกัน

ตัวอย่างหน้าตา: ป้ายกำกับลูกค้า (แบบชิปนุ่ม)
พันธมิตร 🎬 KOL / รีวิว ลูกค้าประจำ

ปิดใช้งานป้ายที่มีลูกค้าติดอยู่แล้ว: toggle "ปิดใช้งาน" — ป้ายหายจากตัวเลือกติดป้ายใหม่ แต่ลูกค้าที่มีป้ายนี้ยังคงเห็นป้ายเดิม กด "ลบ" เมื่อมีคนใช้อยู่ — ระบบไม่ลบถาวรอัตโนมัติ แต่ปิดใช้งานแทน (ลบถาวรได้จริงเฉพาะป้ายที่ยังไม่มีใครใช้เลย) แก้ไข Key ไม่ได้หลังสร้าง — ตั้งผิดต้องลบ/ปิดใช้งานแล้วสร้างใหม่

3. จัดการบทบาท/สิทธิ์ (RBAC) — /admin/permissions

ศูนย์กลางที่ admin ใช้จัดการพนักงานมากที่สุด — สวิตช์หลัก "เปิดใช้งานระบบสิทธิ์การใช้งาน (RBAC)" (เปิด = บังคับสิทธิ์รายฟีเจอร์ตามที่ตั้ง, ปิด = กลับไปตรวจสิทธิ์ตามตำแหน่งแบบเดิม) มีกล่องยืนยันก่อนสลับทุกครั้ง

3.1 แท็บ "สิทธิ์รายพนักงาน" (เริ่มต้น)

เลือกพนักงาน 1 คน → เลือก Preset role → ตารางฟีเจอร์จัดกลุ่มตามโมดูล แต่ละแถวปุ่มสลับวน 3 สถานะ: เทา "จาก preset" → แดงอ่อน "ปิด — revoke override" → ฟ้า "เปิดเพิ่ม — grant override" → กลับเทา ฟีเจอร์กระทบเงิน/ข้อมูลอ่อนไหวมีป้าย "sensitive" (กุญแจ)

ตัวอย่างหน้าตา: ตัวสลับสิทธิ์ 3 สถานะ (จาก preset / ปิด-revoke / เปิด-grant) + ป้าย sensitive
pos.sale.create จาก preset
accounting.vat.config ปิด — revoke
emr.cases.view_all เปิดเพิ่ม — grant

สูตรจริง = (preset ∪ เปิดเพิ่ม) − ปิดไว้ · ป้ายกุญแจ = sensitive (กระทบเงิน/ข้อมูล) · ปุ่ม "รีเซ็ตเป็น preset" ล้าง override

กรณีตัวอย่าง — เปิดสิทธิ์ "เห็นเคสทั้งหมด" ให้หัวหน้า BT คนเดียว

เลือกพนักงานคนนั้น → หา feature emr.cases.view_all → คลิกจนเป็นฟ้า "เปิดเพิ่ม — grant override" → บันทึก — ผลลัพธ์: เฉพาะคนนี้เห็นเคสทั้งหมดในสาขา BT คนอื่นยังเห็นเฉพาะเคสตัวเอง (สูตรสิทธิ์จริง = (preset ∪ เปิดเพิ่ม) − ปิดไว้) — เหมาะกับยกเว้นรายบุคคล ไม่ใช่ทั้งกลุ่ม (ถ้าทั้งบทบาท ให้ไปตั้งที่ "การมองเห็นเคส" ในแท็บ 2 แทน) ปุ่ม "รีเซ็ตเป็น preset" ล้าง override ทั้งหมด

3.2 แท็บ "สิทธิ์ตาม Role"

แก้ "ตัวบทบาท" เอง + เพิ่ม/ลบบทบาทของคลินิกได้เอง — ป้าย "ระบบ"/"คลินิก", "แก้แล้ว", "ต้องอัปเดต N"

กรณีตัวอย่าง — สร้างบทบาทใหม่ "หัวหน้า BT"
  1. กด "เพิ่มบทบาท" → กรอกรหัส (a-z, 0-9, _ เท่านั้น เช่น head_bt) + ชื่อที่แสดง "หัวหน้า BT" → "สร้าง"
  2. บทบาทใหม่เริ่มต้นแบบ"ไม่มีสิทธิ์ใดๆ" (ปลอดภัยไว้ก่อน) และจะไม่ได้รับฟีเจอร์ใหม่ที่ระบบเพิ่มในอนาคตโดยอัตโนมัติเหมือนบทบาทระบบ
  3. ในตารางสิทธิ์ ติ๊กสิทธิ์ที่ต้องการ (เช่น approve คิว, ดูรายงานผลงาน BT) ใช้ตัวกรอง "แสดงเฉพาะที่ต่างจากค่าเริ่มต้น" ช่วยหา → บันทึก
  4. ถ้ามีพนักงานที่เคยถูกตั้งสิทธิ์รายคนไว้แล้ว (ตัวเลข "ต้องอัปเดต N") ระบบเด้งกล่องยืนยัน "ใช้กับพนักงานที่มีอยู่เลยไหม?" ทันทีหลังบันทึก — ต้องกดยืนยัน ไม่งั้นพนักงานกลุ่มนั้นยังใช้สิทธิ์ชุดเดิมต่อไป
กับดักที่ admin ต้องรู้ (สาเหตุร้องเรียนบ่อยที่สุด)แก้บทบาทแล้วไม่ย้อนไปหาพนักงานที่ถูกกำหนดสิทธิ์รายคนไว้แล้วโดยอัตโนมัติ พนักงานที่ยังไม่เคยถูกตั้งสิทธิ์รายคนจะได้รับผลทันที ส่วนคนที่มี "สิทธิ์แช่แข็ง" ต้องกดปุ่ม "ใช้กับพนักงานที่มีอยู่" ทุกครั้งหลังบันทึก

ปุ่มอื่น: "คืนค่าเริ่มต้น" (เฉพาะบทบาทระบบที่ถูกแก้แล้ว) · "ลบบทบาท" (เฉพาะบทบาทคลินิก — มีพนักงานใช้อยู่ต้องเลือกบทบาทปลายทางย้ายคนก่อน)

ส่วนต่อท้าย — "การมองเห็นเคส (My-Cases)": ตารางกำหนดว่าแต่ละบทบาทเห็น "เห็นทั้งหมด" หรือ "เฉพาะเคสของตัวเอง" (ประวัติการรักษารายคนไข้ไม่ถูกจำกัดด้วยกฎนี้เพื่อความปลอดภัยทางคลินิก) — admin/super_admin เห็นทั้งหมดเสมอ ตั้งเป็นอย่างอื่นไม่ได้ (กันล็อกตัวเอง)

กรณีตัวอย่าง

ให้ทั้งบทบาท "หัวหน้า BT" เห็นเคสทั้งหมดในสาขา — เลือก dropdown แถว "หัวหน้า BT" เป็น "เห็นทั้งหมด" แทน "ตามค่าเริ่มต้น" → บันทึก — ทุกคนที่มีบทบาทนี้เห็นเคสทั้งหมด ไม่ต้อง grant รายคนอีก ปุ่ม "กลับค่าเริ่มต้นระบบ" ล้างนโยบายทั้งหมด

3.3 แท็บ "การอนุมัติ"

ผู้มีสิทธิ์อนุมัติ: กำหนดว่าตำแหน่งใดอนุมัติงานประเภทใดได้บ้าง ตำแหน่งเริ่มต้นของระบบ (ป้ายเทา+กุญแจ) ถอดออกไม่ได้ เพิ่มตำแหน่งเสริมได้ (ป้ายฟ้า)

กรณีตัวอย่าง — ให้ "ผู้จัดการสาขา" อนุมัติแปลงแพ็คเกจเป็นเครดิตได้เพิ่ม

เข้าแท็บ "การอนุมัติ" หาโดเมน "แปลงแพ็คเกจเป็นเครดิต" กดชิป "ผู้จัดการ" ในส่วน "อนุญาตเพิ่มเติม" → "บันทึกผู้อนุมัติ" — แก้ไขได้เฉพาะ admin/super_admin เท่านั้น (กันเพิ่มสิทธิ์อนุมัติให้ตัวเอง) มีผลทันทีทั้งระบบ

การอนุมัติการกระทำอ่อนไหว: ตารางการกระทำกระทบเงิน/สต็อก แต่ละแถว toggle 2 อัน: "ใส่ PIN" และ "ขออนุมัติ"

ข้อควรรู้toggle "ขออนุมัติ" บันทึกค่าไว้ได้ แต่ระบบอนุมัติแบบ pending-changeยังไม่เปิดใช้งานจริง — ปัจจุบันมีผลบังคับใช้จริงเฉพาะ "ใส่ PIN" เท่านั้น อย่าเข้าใจผิดว่าเปิด "ขออนุมัติ" แล้วจะมีคนต้องกดอนุมัติจริง

4. งานผู้ดูแล

3 รายการแรกเกตด้วยสิทธิ์ audit.log.view (หรือ role admin/super_admin/manager/accounting/view_all)

ตัวอย่างหน้าตา: งานผู้ดูแล — ถังขยะ (กู้คืน 90 วัน) + Integrity ระดับความรุนแรง

สมหญิง ใจดี ลูกค้า

ลบเมื่อ 20 ก.ค. · เหลือกู้ได้ 88 วัน

กู้คืน
critical 2 high 5 medium 8 low 3

ถังขยะกู้คืนได้ 90 วัน (พ้นกำหนดลบถาวร) · Integrity report-only (ไม่แก้อัตโนมัติ) ไล่ critical/high ก่อน

กรณีตัวอย่าง — สืบว่าใครแก้ราคาบริการเมื่อวาน

เปิดหน้า Logs → ตัวกรองช่วงวันที่ (ค่าเริ่มต้นแสดงเฉพาะวันนี้ ต้องขยายเป็นเมื่อวานเอง) → กรองหมวดปฏิบัติการที่เกี่ยวกับบริการ → คลิกแถวที่สงสัยดูรายละเอียด → กด "เหตุการณ์เดียวทั้งสาย" ดูทุก log ที่เกิดจาก action เดียวกัน (กลุ่มตาม requestId)

กรณีตัวอย่าง — พนักงานลบลูกค้าผิดคน ต้องการกู้คืน

เปิด "ถังขยะ" กดชิปกรองชนิด "ลูกค้า" หาแถวชื่อลูกค้า (คอลัมน์ ลบเมื่อ/ลบโดย) → "กู้คืน" — กู้คืนได้ภายใน90 วันเท่านั้น (พ้นกำหนดถูกลบถาวรอัตโนมัติ) ระบบตรวจก่อนกู้คืนเสมอว่าไม่มีรายการที่ใช้งานอยู่ครองชื่อ/คีย์ซ้ำ ถ้าชนกันจะแจ้งเตือนขัดแย้งแทนการกู้คืนเงียบๆ

กรณีตัวอย่าง — ตรวจก่อนปิดงบประจำเดือน

เปิดหน้า Integrity (report-only ไม่มีปุ่มแก้ไขอัตโนมัติ) ดูตัวเลขสรุปตามระดับความรุนแรง (critical/high/medium/low) → กรองสถานะ "เปิดอยู่ (open)" → ไล่ดู critical/high ก่อน → กด "ตรวจสอบเดี๋ยวนี้" (แค่สั่งรัน detector รอบใหม่ ไม่ได้แก้ไขความผิดปกติให้) → พบแล้วต้องตามไปแก้ที่หน้าโมดูลต้นทาง (บัญชี/สต็อก) เอง

"การแจ้งเตือนของฉัน" (/settings/my-notifications) เป็น self-service ของทุกคน ไม่ใช่แค่ admin — ปิดเสียงได้เฉพาะระดับ "กันลืม" ตั้งช่วงเวลาห้ามรบกวน (quiet hours) ได้เฉพาะแจ้งเตือนที่ส่งไปมือถือ กระดิ่งในแอปยังคงเห็นเสมอ

5. แคตตาล็อก: บริการ / หมวดหมู่ / แพ็กเกจ / โปรโมชัน / สะสมแต้ม

ตัวอย่างหน้าตา: การ์ดบริการ (สวิตช์เปิด/ปิด) + การ์ดแพ็กเกจ (คอร์ส) + การ์ดโปรโมชัน (-10%)
ฉีดฟิลเลอร์ 1cc
ฟิลเลอร์฿5,999
คอร์ส-10%

เลเซอร์ 5 ครั้ง

฿20,000฿18,000

สวิตช์เปิด/ปิดบริการ · แพ็กเกจมีป้าย "คอร์ส" + % ส่วนลด · ดูมุมมอง "ทุกสาขา" ปุ่มแก้/ลบถูกปิด (เลือกสาขาก่อน)

กรณีตัวอย่าง — เพิ่มบริการ "ฉีดฟิลเลอร์ 1cc" ที่ต้องตัดสต็อกอัตโนมัติ

กด "เพิ่มบริการ" (catalog.service.create) กรอกชื่อ+หมวดหมู่ (บังคับ เลือกจากที่ตั้งไว้แล้วเท่านั้น สร้างใหม่ที่นี่ไม่ได้)+ราคา+คำอธิบาย → "ยา/เวชภัณฑ์ที่ใช้ในบริการ" เพิ่มสินค้า+จำนวน+หน่วย — ติ๊ก "ไม่บังคับ — เพิ่มตอนใช้จริง" ถ้าใช้ได้หลายยี่ห้อ หรือกำหนด "เพดาน (max)" จำกัดปริมาณต่อเคส → "เปิดให้บริการ" → บันทึก — ผลลัพธ์: เปิดเคสแล้วเลือกบริการนี้ ระบบตัดสต็อกอัตโนมัติตามจำนวนที่ตั้ง

กรณีตัวอย่าง — ลบหมวดหมู่บริการที่มีบริการอยู่ 12 รายการ

กดลบที่แถวหมวดหมู่ → ระบบแจ้งจำนวนบริการ (12 รายการ) ให้เลือก "ย้ายบริการไปหมวด" ก่อนลบ (ไม่เลือก = ย้ายไป "อื่นๆ" อัตโนมัติ) — บริการ 12 รายการไม่ถูกลบไปด้วย

หมวดโน้ตเคส: ติ๊ก "โน้ตเกี่ยวกับคลัง (แจ้งเคลมสินค้า/อุปกรณ์)" → ทุกโน้ตในหมวดนี้ส่งไปที่คลัง › เคลมสินค้า › "Issue จากเคส" อัตโนมัติ — มีโน้ตใช้หมวดอยู่ ระบบบล็อกการลบและเสนอ "ปิดใช้งานแทน"

กรณีตัวอย่าง — สร้างแพ็กเกจคอร์ส "เลเซอร์ 5 ครั้ง เลือกยี่ห้อได้"

"สร้างแพ็คเกจใหม่" เลือกประเภท "เซสชัน/คอร์ส" กรอกชื่อ/คำอธิบาย/รูปปก ตั้งราคาขาย+ราคาเดิม (คำนวณ % ส่วนลดอัตโนมัติ) + ระยะใช้สิทธิ์เป็นวัน → เพิ่มรายการติ๊ก "เลือกได้" พร้อมตัวเลือกอย่างน้อย 2 ยี่ห้อ → ติ๊ก "แสดงในโปรโมชั่น LINE" ถ้าต้องการให้ขึ้นในแอปลูกค้า (ไม่ติ๊ก = ขายได้เฉพาะหน้าเคาน์เตอร์)

กับดักมุมมอง "ทุกสาขา"ถ้ากำลังดูแบบ "ทุกสาขา" (admin/super_admin เท่านั้นสลับได้) ปุ่มแก้ไข/เปิด-ปิด/ลบจะถูกปิดใช้งานพร้อมแถบเตือน "เลือกสาขาก่อนแก้ไข/ลบแพ็กเกจ"

ลบแพ็กเกจที่มีลูกค้าซื้อไปแล้ว: ระบบแจ้งลบไม่ได้ — ใช้ปุ่ม "เปิด-ปิดการใช้งาน" แทน ลูกค้าเดิมยังใช้สิทธิ์ที่ซื้อไว้ต่อได้ปกติ

กรณีตัวอย่าง — แคมเปญคูปองลด 10% เฉพาะลูกค้า Gold/Platinum ช่วงปีใหม่

"สร้างแคมเปญ" เลือก "คูปองโค้ด" (ต่างจาก "ใช้อัตโนมัติ") ตั้งส่วนลด เปอร์เซ็นต์ 10% + ส่วนลดสูงสุด → เงื่อนไขผู้มีสิทธิ์เลือก "ระดับสมาชิก" ติ๊ก Gold+Platinum → ตั้งช่วงวันที่+จำนวนการใช้ทั้งหมด/ต่อลูกค้า → เปิดใช้งาน — เงื่อนไขอื่นเลือกได้ 1 ใน 3: "ลูกค้าใหม่" หรือ "เฉพาะลูกค้าที่ระบุ" (พิมพ์เบอร์โทรทีละเบอร์)

กรณีตัวอย่าง — เปิดใช้งานระบบสะสมแต้มครั้งแรก

ไปแท็บ "ตั้งค่าแต้ม" เปิดสวิตช์หลัก ตั้งสูตรรับแต้ม (ตัวหาร+อัตราพื้นฐาน = (ยอดใช้จ่าย÷ตัวหาร)×อัตราพื้นฐาน×ตัวคูณตามระดับลูกค้า) ตั้งตัวคูณแยกราย Bronze/Silver/Gold/Platinum → บันทึก — ปิดสวิตช์ ฟีเจอร์สะสมแต้มทั้งหมดถูกซ่อนจากทุกหน้าจอทันที

ปุ่มแลกของรางวัลใช้ได้เฉพาะแอดมินเท่านั้นแม้แต้มพอ (ป้องกันพนักงานแลกให้ตัวเอง)

6. งานร่วมทุกตำแหน่ง

  • สลับสาขา — dropdown "สาขา:" แสดงเฉพาะหน้าหลังบ้าน (รายงาน/AR/บัญชี/HR) ตัวเลือก "ทุกสาขา" ให้เฉพาะ admin/super_admin เท่านั้น — เปลี่ยนสาขาแล้วข้อมูลค้างบนจอ (ตะกร้า/ตัวกรอง) ถูกล้างทันที คลินิกโหมดสาขาเดียว (mono) ไม่แสดงตัวเลือกนี้เลย
  • กระดิ่งแจ้งเตือน — ปุ่ม "ดูทั้งหมด" พาไปหน้ารายการแจ้งเตือนเต็ม (/hr/my-notifications) คนละหน้ากับ "การแจ้งเตือนของฉัน" ในตั้งค่า/ระบบ
  • ปรับขนาดตัวอักษร — อยู่ที่หน้าแดชบอร์ดมุมขวาบน ปุ่ม −/+ ปรับทีละ 5% (80–150%) จำค่าไว้ในเครื่อง
อ้างอิงทุกเมนู

📅 แดชบอร์ด และ การจอง

หน้าแรกหลัง login และระบบตารางนัดหมาย/ปฏิทินคิว

1. แดชบอร์ด

เข้าจากเมนู: กลุ่ม งานประจำวัน → แดชบอร์ด (หน้าแรกของระบบ)

1.1 สิ่งที่เห็นบนหน้าจอ

หัวหน้าหน้าจอทักทายตามช่วงเวลา ("สวัสดีตอนเช้า!" / "สวัสดีตอนบ่าย!" / "สวัสดีตอนเย็น!") พร้อมวันที่ปัจจุบัน และปุ่ม รีเฟรช มุมขวาบนสำหรับโหลดข้อมูลทุกการ์ดใหม่พร้อมกัน

การ์ดสรุปวันนี้ (4 การ์ด):

การ์ดแสดงอะไร
รายได้วันนี้ (เขียว)ยอด ฿ สุทธิวันนี้ + จำนวนรายการ
นัดหมาย (น้ำเงิน)จำนวนนัดวันนี้ + "รอ N • เสร็จ N"
เคสที่ดำเนินการ (ม่วง)จำนวนเคส EMR ที่กำลังดำเนินการ
ลูกค้าทั้งหมด (ส้ม)จำนวนลูกค้าลงทะเบียนสะสม
ตัวอย่างหน้าตา: การ์ดสรุปวันนี้ (KPI) 4 ใบ
รายได้วันนี้
฿48,900
นัดหมาย
18
ลูกค้าทั้งหมด
2,480
ยอดรายได้ดึงไม่สำเร็จถ้าระบบดึงยอดรายได้จากแหล่งข้อมูลหลักไม่สำเร็จ จะมีแถบเตือนสีเหลืองอำพันด้านบนการ์ด แจ้งว่า "ตัวเลขรายได้ที่แสดงอาจไม่ถูกต้อง..." — พนักงานควรระวังไม่ยึดตัวเลขนั้นเป็นทางการจนกว่าจะรีเฟรชแล้วหาย

ส่วนแจ้งเตือน (แสดงเฉพาะเมื่อมีรายการ) — คลิกที่การ์ดเพื่อไปหน้าที่เกี่ยวข้องได้ทันที:

  • หมดสต็อก (แดง) → คลิกไปเมนูคลังสินค้า
  • สต็อกต่ำ (เหลือง) → คลิกไปเมนูคลังสินค้า
  • ใกล้หมดอายุ (ส้ม) → คลิกไปเมนูคลังสินค้า
  • วงเงินใกล้หมดอายุ (ม่วง) → คลิกไปหน้ารายงานวงเงินใกล้หมดอายุ

ตาราง 3 คอลัมน์ (เนื้อหาหลัก):

คอลัมน์หัวข้อเนื้อหาปุ่มมุมขวาบน
1นัดหมายวันนี้รายการนัดสูงสุด 6 รายการ พร้อมจุดสี+เวลา+ชื่อบริการ+ป้ายสถานะ"ดูทั้งหมด" → ไปหน้าการจอง
2ยอดขายล่าสุดใบเสร็จล่าสุด 5 รายการ พร้อมชื่อลูกค้า/เลขที่ใบเสร็จ+เวลา+ยอดเงิน"ขายใหม่" → ไปหน้า POS
3เคสที่กำลังดำเนินการเคส EMR ที่ยังไม่ปิด สูงสุด 5 รายการ พร้อมชื่อลูกค้า+ผู้ให้บริการ"ดูทั้งหมด" → ไปหน้า EMR

ป้ายสถานะนัดหมายในคอลัมน์ 1 ใช้คำ: จองแล้ว / ยืนยันแล้ว / เสร็จสิ้น / ยกเลิก / รอดำเนินการ

เมนูด่วน (แถบล่างสุด) — ปุ่มไอคอนกลม 7 ปุ่ม: ขายใหม่ · จองนัด · เคสใหม่ · เพิ่มลูกค้า · คลังสินค้า · จัดการบริการ · ดูรายงาน

ตัวอย่างหน้าตา: เมนูด่วน (ปุ่มไอคอนกลม 7 ปุ่ม)

ขายใหม่

จองนัด

เคสใหม่

เพิ่มลูกค้า

ปุ่มลัด 7 ปุ่มไปหน้าที่ใช้บ่อย · "เพิ่มลูกค้า" พาไปหน้ารายชื่อลูกค้า (ไม่เปิดฟอร์มทันที)

1.2 บทบาทที่ใช้

ทุกบทบาทที่ล็อกอินเข้าระบบเห็นแดชบอร์ดนี้เป็นหน้าแรก การ์ด "วงเงินใกล้หมดอายุ" แสดงเฉพาะผู้มีสิทธิ์ wallet.report.view (แอดมิน/sale)

2. การจอง

เข้าจากเมนู: กลุ่ม งานประจำวัน → การจอง

แก้ไข/ลบนัด: เปิดนัดแล้วแก้รายละเอียดได้ทั้งเวลา บริการ ผู้ให้บริการ ห้อง และหมายเหตุ ส่วนนัดที่ลงผิดตัวลบทิ้งได้ · มุมมองรายเดือนไม่แสดงนัดที่ยกเลิกแล้ว ปฏิทินจึงเหลือเฉพาะนัดที่ยังมีผลจริง

2.1 หัวหน้าหน้าจอ

หัวข้อหน้า "การจอง / ตารางนัด" พร้อมบรรทัดสรุปที่เปลี่ยนตามมุมมองที่เลือก — มุมมอง เดือน: "[เดือน ปี] · นัดทั้งเดือน N · โหลดแล้ว N รายการ"; มุมมองอื่น: "นัดทั้งหมด N · ยืนยันแล้ว N · รอยืนยัน N"

ปุ่มมุมขวาบนหน้าที่
สลับมุมมอง: เดือน / รายสัปดาห์ / รายวัน / รายการเปลี่ยนรูปแบบการแสดงปฏิทิน
ตั้งค่าเวลา (ไอคอนเฟือง)ไปหน้า "ตั้งค่าตารางเวลา"
รีเฟรชโหลดนัดหมายเดือนปัจจุบันใหม่
จองนัดใหม่ (ปุ่มสีฟ้าเข้ม)เปิดหน้าต่างจองนัดใหม่

ช่องค้นหา: "ค้นหาด้วยชื่อลูกค้า, บริการ, หรือผู้ให้บริการ..." ใช้ได้ทุกมุมมอง

ตัวกรองช่วงวันที่ (ชิปปุ่ม: ทั้งหมด / วันนี้ / 7 วัน / 30 วัน / กำหนดเอง) — แสดงเฉพาะมุมมอง "รายการ" เท่านั้น เพราะมุมมองเดือน/สัปดาห์/วันมีปุ่มเลื่อนปฏิทินของตัวเองอยู่แล้ว

ตัวอย่างหน้าตา: สลับมุมมองปฏิทิน + ช่องค้นหา + ปุ่ม "จองนัดใหม่"
เดือนสัปดาห์วันรายการ
จองนัดใหม่
ค้นหาด้วยชื่อลูกค้า, บริการ, หรือผู้ให้บริการ…

4 มุมมอง (เดือน/สัปดาห์/วัน/รายการ) · ชิปกรองช่วงวันที่เห็นเฉพาะมุมมอง "รายการ" · ปุ่มจองนัดใหม่ = ฟ้าเข้ม

2.2 มุมมองปฏิทิน 4 แบบ

ก) มุมมองเดือน (ค่าเริ่มต้น) — ตารางปฏิทินเต็มเดือน (อา–ส) แต่ละวันแสดงนัดสูงสุด 3 รายการเป็นแถบสี พร้อมเวลา+ชื่อลูกค้า/บริการ ถ้ามีมากกว่านั้นแสดง "+N เพิ่มเติม" (คลิกเพื่อไปมุมมองรายวันของวันนั้น) คลิกเลขวันที่เพื่อไปมุมมองรายวัน มีปุ่ม เดือนก่อน / วันนี้ / เดือนถัดไป และแถบสัญลักษณ์สี (legend): รอยืนยัน, ยืนยันแล้ว, เช็คอิน/ให้บริการ, สำเร็จ, ยกเลิก, ไม่มา

ตัวอย่างหน้าตา: ป้ายสถานะนัดหมาย (สีตาม legend จริง)
รอยืนยัน ยืนยันแล้ว เช็คอิน/ให้บริการ สำเร็จ ยกเลิก ไม่มา

ข) มุมมองรายสัปดาห์ — ตาราง 7 วันในสัปดาห์นั้น แต่ละวันแสดงนัดสูงสุด 4 รายการ (เวลา+ชื่อลูกค้า) พร้อมปุ่มเลื่อนสัปดาห์ก่อนหน้า/ถัดไป

ค) มุมมองรายวัน — กริดช่วงเวลา (slot) ของวันนั้น แต่ละช่อง 30 นาทีเป็นการ์ดแสดงสถานะ: ว่าง (เขียว, มีตัวเลขที่นั่งเหลือ เช่น "ว่าง · 2/4"), มีนัด (ฟ้า, แสดงรายชื่อลูกค้าที่จองในช่องนั้น), เต็ม (แดง/ชมพู), ผ่านมาแล้ว (เทา) — ถ้าวันนั้นสาขาปิด/วันหยุด/หมอไม่ออกตรวจ จะขึ้นข้อความ "วันหยุด / ปิดทำการ" หรือ "ผู้ให้บริการไม่ออกตรวจในวันนี้" นัดที่ไม่ตรงกับช่องเวลามาตรฐานจะแสดงแยกในหัวข้อ "นัดอื่น ๆ" มีปุ่มเลื่อนวันก่อนหน้า/ถัดไป และช่องเลือกวันที่โดยตรง

ตัวอย่างหน้าตา: กริดช่วงเวลา มุมมองรายวัน (ว่าง/มีนัด/เต็ม/ผ่านมาแล้ว)
09:00ผ่านมาแล้ว
10:30สมหญิง · ปรึกษาผิว
11:00ว่าง · 2/4
13:00เต็ม

ช่อง 30 นาที · ว่าง (เขียว, มีที่นั่งเหลือ) / มีนัด (ฟ้า) / เต็ม (แดง กดไม่ได้) / ผ่านมาแล้ว (เทา)

ง) มุมมองรายการ (agenda) — แบ่งเป็น 2 ส่วน: รอยืนยัน (จาก LINE) การ์ดพื้นเหลือง แสดงเฉพาะนัดที่มาจาก LINE และยังไม่ยืนยัน มีปุ่ม "ซ่อน/แสดง" ย่อส่วนนี้ได้ แต่ละรายการมีปุ่มดูรายละเอียด (ไอคอนตา) และปุ่มยืนยันด่วน (ไอคอนถูก); และ นัดทั้งหมด/นัดหมายวันนี้/ฯลฯ (หัวข้อเปลี่ยนตามตัวกรองวันที่) จัดกลุ่มตามวันที่ คลิกแถวเพื่อดูรายละเอียด — ด้านขวามีแถบข้าง 2 กล่อง: แพทย์/ห้องตรวจ (จำนวนนัดต่อผู้ให้บริการ) และสถานะ (คำอธิบายสี)

2.3 จองนัดใหม่ — ขั้นตอน

กดปุ่ม "จองนัดใหม่" เปิดหน้าต่างหัวข้อ "จองนัดใหม่":

ตัวอย่างหน้าตา: ปุ่ม "จองนัดใหม่" + ฟอร์ม field (วันที่/เวลา)
จองนัดใหม่
วันที่26/07/2569
เวลา10:30
  1. เลือกประเภทผู้ป่วย — สลับปุ่ม "คนไข้ในระบบ" / "ลูกค้า Walk-in" · คนไข้ในระบบ: พิมพ์ค้นหาในช่อง "ค้นหาด้วยชื่อหรือเบอร์โทร..." ระบบค้นหาแบบ live พร้อมแสดงเลข OPD ถ้ามี เลือกจากรายการดรอปดาวน์ เมื่อเลือกแล้วชื่อ+เบอร์ลูกค้าจะโชว์เป็นการ์ดสีเขียว (กดกากบาทเพื่อยกเลิกและเลือกใหม่) · ลูกค้า Walk-in: กรอก "ชื่อลูกค้า Walk-in" (บังคับ), "เบอร์โทรศัพท์", "อีเมล (ถ้ามี)"
  2. กรอกชื่อบริการ — ช่อง "ชื่อบริการ" (พิมพ์อิสระ เช่น "ปรึกษา, ตรวจสุขภาพ")
  3. เลือกวันที่และเวลา — ช่อง "วันที่" และ "เวลา" หรือคลิกเลือกจากตารางช่วงเวลาว่างที่แสดงด้านล่างฟอร์ม (สีฟ้า=ว่าง, เหลือง=เกือบเต็ม, แดง=เต็ม/กดไม่ได้, เทา=ผ่านมาแล้ว/กดไม่ได้) — ถ้าเลือกผู้ให้บริการแล้ว ตารางจะกรองเฉพาะคิวของผู้ให้บริการคนนั้น ไม่งั้นแสดงคิวรวมทั้งสาขา
  4. กรอกระยะเวลา (นาที) — ค่าเริ่มต้น 30 นาที
  5. เลือกช่องทางการจอง — ดรอปดาวน์: Walk-in / โทรศัพท์ / LINE / เว็บไซต์ / อื่นๆ
  6. เลือกผู้ให้บริการ (เลือกได้) — ดรอปดาวน์รายชื่อหมอ (เฉพาะพนักงานที่มีตำแหน่งเป็น doctor)
  7. กรอกห้อง (เลือกได้) — เช่น "ห้อง 101"
  8. หมายเหตุ (เลือกได้)
  9. กด "จองนัด" เพื่อบันทึก หรือ "ยกเลิก" เพื่อปิดโดยไม่บันทึก

ถ้าบันทึกไม่สำเร็จ ข้อความ error จากระบบจะขึ้นเป็นกรอบสีชมพูภายในฟอร์ม (ไม่ใช่แค่ toast ที่อาจมองไม่เห็น)

2.4 ดูรายละเอียดนัด / เช็คอิน / เริ่มเคส

คลิกที่นัดหมายใดๆ (จากทุกมุมมอง) เปิดหน้าต่าง "รายละเอียดนัด" แสดง: ป้ายสถานะปัจจุบัน · ข้อมูลลูกค้า (ชื่อ, เบอร์โทร, อีเมล, HN) · รายละเอียดนัด (บริการ, วันที่, เวลา, ระยะเวลา, ผู้ให้บริการ, ห้อง, ช่องทางการจอง, สาขา) · หมายเหตุ (ถ้ามี) · วันที่สร้าง/แก้ไขล่าสุด

เริ่มเคสผู้ป่วย (แสดงเมื่อสถานะเป็น จองแล้ว/ยืนยันแล้ว/เช็คอินแล้ว/กำลังให้บริการ):

  • มีเคสเปิดแล้ว → กล่องเขียว "สร้างเคสแล้ว" พร้อมเลขที่เคสและปุ่ม "ดูใน EMR"
  • ยังไม่มี และนัดยังไม่ผูกกับลูกค้าในระบบ → กล่องเหลืองอำพัน "เริ่มเคส EMR ไม่ได้ (No Customer Profile)"
  • พร้อม → กล่องม่วง "เริ่มเคสผู้ป่วย" พร้อมปุ่ม "เช็คอิน + เปิดเคส EMR" (หรือ "สร้างเคส + ไปหน้า EMR" แล้วแต่ค่าคอนฟิกระบบ) — กดแล้วนำไปหน้า EMR อัตโนมัติ
ตัวอย่างหน้าตา: ปุ่ม "เริ่มเคสผู้ป่วย" 3 สถานะ
เช็คอิน + เปิดเคส EMR
เริ่มเคส EMR ไม่ได้ (No Customer Profile)
✓ สร้างเคสแล้ว — #OPD-04821 ดูใน EMR

เลื่อนนัด (แสดงเมื่อสถานะเป็น รอดำเนินการ/จองแล้ว/ยืนยันแล้ว): กดปุ่ม "เลือกเวลาใหม่" เปิดหน้าต่าง "เลื่อนนัด" — เลือก "วันที่ใหม่" แล้วเลือกช่วงเวลาจากตารางช่วงเวลาว่าง จากนั้นกด "ยืนยันเลื่อนนัด"

ยกเลิกนัด (แสดงเมื่อยังไม่ใช่ ยกเลิก/เสร็จสิ้น/ไม่มา): กรอก "เหตุผลที่ยกเลิก (เลือกได้)" แล้วกด "ยกเลิกนัด" — หากนัดนี้มาจากระบบจอง/kiosk และชำระเงินแล้ว จะมีคำเตือนสีเหลืองอำพันว่าระบบจะยกเลิกแบบคืนเงินเป็นเครดิตลูกค้าอัตโนมัติ

ตัวอย่างหน้าตา: การ์ด "รอยืนยัน (จาก LINE)" + ปุ่มเลือกเวลาใหม่ / ยกเลิกนัด
รอยืนยัน (จาก LINE)

สมหญิง · ปรึกษาผิว · พรุ่งนี้ 10:30

ยืนยันนัดหมาย
เลือกเวลาใหม่ ยกเลิกนัด

นัดจาก LINE ค้าง "รอดำเนินการ" จนกดยืนยัน · ยกเลิกนัดที่ชำระผ่าน kiosk = คืนเป็นเครดิตลูกค้าอัตโนมัติ

ยืนยันนัดหมาย (แสดงเฉพาะสถานะ "รอดำเนินการ"): ปุ่มสีเขียว "ยืนยันนัดหมาย" ยืนยันด่วนจากหน้าต่างรายละเอียด

2.5 ตั้งค่าตารางเวลา

เข้าจากปุ่ม "ตั้งค่าเวลา" ในหน้าการจอง หัวข้อหน้า "ตั้งค่าตารางเวลา" มี 4 แท็บ:

แท็บเนื้อหา
เวลาทำการตั้งเวลาเปิด-ปิดของแต่ละวันในสัปดาห์ (checkbox เปิด/ปิด + เวลาเริ่ม-สิ้นสุด) กด "บันทึก"
วันหยุดเพิ่มวันหยุด (วันที่, ชื่อวันหยุด, หรือเปิดบางส่วนโดยระบุช่วงเวลา) ลบวันหยุดที่ตั้งไว้ได้
ช่วงเวลาที่ปิดบล็อกช่วงเวลาเฉพาะ (วันที่ + ช่วงเวลา + เหตุผล เช่น "ประชุม") ลบได้
ความจุห้องตั้งจำนวนคนรับได้พร้อมกันต่อช่วงเวลาของแต่ละห้อง กด "บันทึก" ต่อห้อง

ผู้ใช้ที่ไม่มีสิทธิ์ booking.manage (ไม่ใช่แอดมิน) จะเห็นข้อความ "คุณกำลังดูแบบอ่านอย่างเดียว — การแก้ไขตารางเวลาทำได้เฉพาะผู้ดูแลระบบ (admin)" และฟอร์ม/ปุ่มบันทึกทั้งหมดจะถูกปิดใช้งาน (เห็นได้แต่แก้ไม่ได้)

ตัวอย่างหน้าตา: ตั้งค่าตารางเวลา 4 แท็บ + แถวเวลาทำการ (toggle + เวลา)
เวลาทำการวันหยุดช่วงเวลาที่ปิดความจุห้อง
จันทร์09:0018:00
อาทิตย์ปิดทำการ

4 แท็บ: เวลาทำการ/วันหยุด/ช่วงเวลาที่ปิด/ความจุห้อง · ไม่มีสิทธิ์ booking.manage = อ่านอย่างเดียว (ฟอร์มปิด)

2.6 บทบาทที่ใช้

  • เจ้าหน้าที่ต้อนรับ/sale: จองนัด, เลื่อนนัด, ยกเลิกนัด, ยืนยันนัดจาก LINE, เช็คอิน/เริ่มเคส — ใช้งานได้ทุกฟีเจอร์ในหน้าการจอง ยกเว้นแก้ไขตั้งค่าตารางเวลา
  • แอดมิน (admin/super_admin หรือมีสิทธิ์ booking.manage): เพิ่มเติมจากด้านบน คือแก้ไขเวลาทำการ/วันหยุด/ช่วงเวลาปิด/ความจุห้องได้
  • หมอ: เห็นนัดของตัวเองผ่านมุมมองปฏิทิน (กรองด้วยช่องค้นหาชื่อผู้ให้บริการ) และใช้ปุ่มเริ่มเคส/ดูใน EMR
หมายเหตุขอบเขตเอกสาร: ระบบไม่มีฟีเจอร์ลากการ์ดนัดย้ายช่วงเวลา (drag-and-drop) และไม่มีหน้า "สถานะคิว" แยกต่างหาก — การย้ายเวลานัดทำผ่านปุ่ม "เลื่อนนัด" เท่านั้น ส่วนสถานะคิวที่ใกล้เคียงที่สุดคือป้ายสถานะนัดที่แสดงในทุกมุมมองปฏิทิน
อ้างอิงทุกเมนู

🧾 ขายหน้าร้าน (POS)

เปิดเคส ขายบริการ/แพ็กเกจ รับชำระเงิน ออกใบเสร็จ ยกเลิก/คืนเงิน

1. ภาพรวมหน้าจอ

เข้าจากเมนู: ขายหน้าร้าน (POS)

หัวหน้าหน้าจอ: "ระบบจุดขาย (POS)""เลือกสินค้า/บริการ + เปิดเคส หรือดูเคสรอปิดที่รอดำเนินการ"

หน้าจอแบ่ง 2 ส่วน: ฝั่งซ้าย (2 ใน 3 ของจอ) แท็บโหมดการทำงาน + เนื้อหาตามแท็บ · ฝั่งขวา (1 ใน 3, ปักหมุดอยู่กับที่) ตะกร้าสินค้า "รายการขาย" + ปุ่ม "ชำระเงิน" อยู่ล่างสุดเสมอ

ถ้าล็อกอินแบบเห็นได้ทุกสาขา ("สาขา: ทั้งหมด") จะมีตัวเลือก "ขายที่สาขา:" ให้เลือกสาขาก่อนเริ่มงาน (POS ขายได้ทีละ 1 สาขาเท่านั้น) มีป้ายฟ้า "กำลังขาย: {ชื่อสาขา}" แสดงตลอดเวลา

แท็บโหมดใช้ทำอะไรเงื่อนไขที่แสดง
"สร้างเคส + ขาย" (หรือ "ขายสินค้า/บริการ")เปิดเคสใหม่ + เลือกบริการ/แพ็กเกจขายเสมอ
"เคสรอปิด" (เลขแดง = จำนวนค้าง)ดึงเคสที่ยังไม่ปิดบิลมาชำระเงินเสมอ
"เคสมัดจำ" (เลขเขียว = จำนวน)ติดตามเคสที่รับมัดจำแล้ว รอเก็บส่วนที่เหลือเฉพาะระบบที่เปิดใช้ฟีเจอร์นี้
"พักบิล" (เลขเทา + จุดส้มถ้ามีเงินค้าง)เปิดบิลที่พักไว้กลางคันมาทำต่อเฉพาะระบบที่เปิดใช้ฟีเจอร์นี้

ปุ่มมุมขวาบนของแถบแท็บ: "ยกเลิกรายการ" (กรอบแดง) — เปิดหน้าต่างค้นหาเคสเพื่อยกเลิก/คืนเงิน (ดูหัวข้อ 15)

ตัวอย่างหน้าตา: แถบแท็บโหมด POS (สร้างเคส/เคสรอปิด/เคสมัดจำ/พักบิล) + ยกเลิกรายการ
สร้างเคส + ขาย เคสรอปิด 3 เคสมัดจำ 2 พักบิล 1
ยกเลิกรายการ
กำลังขาย: สาขาสุขุมวิท

แท็บมี badge จำนวนค้าง (แดง=รอปิด · เขียว=มัดจำ · เทา=พักบิล) · ป้ายฟ้า "กำลังขาย: {สาขา}" (POS ทีละ 1 สาขา)

บทบาทที่ใช้: พนักงานที่มีสิทธิ์เข้าเมนู POS ทุกตำแหน่ง (แคชเชียร์/เซลล์/ต้อนรับ) — ปุ่มและช่องที่ต้องใช้สิทธิ์เพิ่มเติมระบุไว้ในแต่ละหัวข้อ

2. เปิดเคส + ขาย — เลือกลูกค้า

หัวข้อกล่อง: "สร้างเคสใหม่ (เปิดการเข้ารับบริการ)" — หน้านี้ใช้เลือกลูกค้าเท่านั้น (ขั้นมอบหมายหมอ/พยาบาล/ผู้ช่วยระดับเคสย้ายไปหัวข้อ 5.3)

2.1 ค้นหาลูกค้า

ช่องค้นหา ป้าย "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *" (จำเป็นต้องกรอกก่อนเปิดเคส) placeholder "กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร)"

  1. พิมพ์ HN / ชื่อ / เบอร์โทร อย่างน้อย 3 ตัวอักษร — น้อยกว่านั้นขึ้น "กรอกอย่างน้อย 3 ตัวอักษรเพื่อค้นหา"
  2. ระบบค้นหาอัตโนมัติ (หน่วง 0.3 วิ) แสดงรายชื่อพร้อมป้าย "HN: {เลข HN}" และเบอร์โทร — พบแต่ยังไม่มี HN: ขึ้นเหลืองอำพัน "พบลูกค้าแต่ยังไม่มี HN — ใช้สแกนบัตร/ถ่ายรูปบัตรเพื่อสร้าง HN ใหม่" (เลือกจากรายการตรงๆ ไม่ได้ ต้องสแกนบัตรเท่านั้น) — ไม่พบเลย: "ไม่พบลูกค้าที่ตรงกับ {คำค้นหา}"
  3. คลิกเลือกชื่อลูกค้าจากรายการ (หรือลูกศรขึ้น/ลง + Enter)
  4. เลือกแล้ว ช่องค้นหาเปลี่ยนเป็นการ์ดยืนยัน ชื่อ+HN+เบอร์โทร มีปุ่ม X ("เปลี่ยนลูกค้า")
ตัวอย่างหน้าตา: ช่องค้นหาลูกค้า + ปุ่มสแกนบัตร / ถ่ายรูปบัตร
กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร) สแกนบัตรประชาชน ถ่ายรูป/อัปโหลดบัตร

2.2 สแกน/ถ่ายรูปบัตรประชาชน (OCR)

ปุ่มใช้เมื่อไหร่
"สแกนบัตรประชาชน" (ระหว่างอ่าน: "กำลังอ่านบัตร…")มีเครื่องอ่านชิปบัตร USB หรือแอป Companion บนแท็บเล็ต
"ถ่ายรูป/อัปโหลดบัตร" (ระหว่างอ่าน: "กำลังอ่านรูป…")ไม่มีเครื่องอ่าน หรือลูกค้าต่างชาติ (ไทย+พาสปอร์ต)

สแกนบัตรประชาชน (เครื่องอ่านชิป):

  1. กดปุ่ม → เสียบบัตรในเครื่องอ่าน — Chrome เดสก์ท็อป: "กำลังอ่านบัตร — เสียบบัตรในเครื่องอ่านแล้วเลือกอุปกรณ์..." เบราว์เซอร์ถามเลือกอุปกรณ์ USB · แท็บเล็ต Android (ไม่มี WebUSB): สลับไปแอป Companion อัตโนมัติ "รอเสียบบัตรที่เครื่องอ่าน... (ผ่านแอป Companion บนแท็บเล็ตนี้)"
  2. อ่านสำเร็จ → ค้นหาลูกค้าอัตโนมัติ 3 ระดับ: พบเลขบัตรตรงกับลูกค้าที่มี HN แล้ว → ผูกทันที ขึ้นเขียว "พบลูกค้าในระบบ — {ชื่อ} (HN: {เลข})" · ไม่พบเลขบัตร แต่ชื่อตรงกับลูกค้าเดิม → กล่องเหลืองอำพัน "ไม่พบเลขบัตรนี้ในระบบ — พบลูกค้าที่ชื่อตรงกัน โปรดยืนยัน" แต่ละรายมีปุ่มเขียว "ใช่คนนี้" (ผูก+บันทึกเลขบัตรอัตโนมัติ) หรือ "ไม่ใช่ — สร้าง HN ใหม่" · ไม่พบเลยทั้งเลขบัตรและชื่อ → เปิดฟอร์มสร้างลูกค้าใหม่อัตโนมัติ
  3. อ่านไม่สำเร็จ → ข้อความแดง + ปุ่ม "ลองสแกนใหม่" เช่น "อ่านเลขบัตรไม่สำเร็จ", "เบราว์เซอร์นี้อ่านบัตรไม่ได้ — ต้องใช้ Chrome/Edge (ไม่รองรับ Safari)"

ถ่ายรูป/อัปโหลดบัตร (OCR): ถ่ายรูปหรือเลือกไฟล์ (ไทย+พาสปอร์ต) → กล่องม่วง "ตรวจสอบข้อมูลจากรูปบัตร — แก้ไขถ้าอ่านผิด แล้วกด ยืนยัน" (ความชัดต่ำจะมีคำเตือน+เปอร์เซ็นต์ความมั่นใจ) → แก้ไขได้ทุกช่อง (บัตรไทย: เลขบัตร 13 หลัก*/คำนำหน้า/ชื่อ/นามสกุล/วันเกิด/ที่อยู่ · พาสปอร์ต: เลขพาสปอร์ต*/ชื่อ/นามสกุล/สัญชาติ/เพศ/วันเกิด) → กด "ยืนยัน" ค้นหาลูกค้าด้วยตรรกะ 3 ระดับเดียวกับสแกนชิป — อ่านไม่สำเร็จขึ้นข้อความแดงตามสาเหตุ เช่น พาสปอร์ตให้ถ่ายแถบ MRZ ให้ชัด

2.3 ตั้งค่าเครื่องอ่านบัตร Companion (ทำครั้งเดียวต่อเครื่อง)

ลิงก์ "ตั้งค่าเครื่องอ่านบัตร" ใต้ปุ่มสแกน — สำหรับแท็บเล็ตที่ไม่มี WebUSB มี 3 ขั้นตอน: (1) ติดตั้งแอป Companion — ปุ่ม "ดาวน์โหลด APK" (2) คัดลอก Device ID ของเครื่องนี้ไปใส่ในแอป (ตั้งชื่อเองได้ เช่น malyn-pos-1) (3) ตั้งค่าในแอป Companion: API base URL, Token (ขอจากแอดมิน — ไม่แสดงในหน้านี้), Device ID, เสียบเครื่องอ่านผ่าน USB-OTG แล้วกด Start

2.4 สร้างลูกค้าใหม่ (เปิดอัตโนมัติเมื่อสแกน/OCR หาไม่พบ)

หัวข้อหน้าต่าง "ลงทะเบียนลูกค้าใหม่" แบ่งแท็บ: ข้อมูลทั่วไป · ข้อมูลส่วนตัว · ที่อยู่ · ข้อมูลทางการแพทย์ · ติดต่อฉุกเฉิน · การติดต่อ — บังคับกรอก: ชื่อ (First Name), ชื่อเล่น, เบอร์โทรศัพท์

เลข HN (OPD) มีสวิตช์ Auto/Manual — ค่าเริ่มต้น Auto (ล็อก ระบบออกเลขให้อัตโนมัติ) สลับ Manual เพื่อกรอกเอง — กด "บันทึกข้อมูล" สร้างลูกค้าและผูกเข้าเคสทันที

3. เลือกบริการ/แพ็กเกจ

POS ขายเฉพาะบริการและคอร์ส/แพ็กเกจเท่านั้น — ไม่มีสินค้าปลีกในตะกร้านี้ (สินค้าที่เห็นมาจากเคสเดิม หรือเป็นสินค้าสิ้นเปลืองที่ผูกมากับบริการอัตโนมัติ)

แถบกรองบนสุด: ช่องค้นหา "ค้นหาบริการ / คอร์ส…" (ค้นได้ทั้งชื่อและราคา) · ปุ่มกรองประเภท: ทั้งหมด/บริการ/แพ็คเกจ · ชิปหมวดหมู่ + ชิป "คอร์ส/แพ็กเกจ" ท้ายสุด · ปุ่มสลับรูปแบบการ์ด: รายการ/เล็ก/กลาง (ค่าเริ่มต้น)/ใหญ่ (จำการตั้งค่าในเครื่อง) · ตัวนับผลลัพธ์

ขั้นตอน: แตะการ์ดบริการ/แพ็กเกจ 1 ครั้ง = เพิ่มลงตะกร้าทันที ไม่มีขั้นยืนยัน — แตะซ้ำเพิ่มจำนวนอัตโนมัติ การ์ดแพ็กเกจมีป้าย "คอร์ส" มุมซ้ายบน บริการที่มีสินค้าสิ้นเปลืองผูกอยู่จะมีข้อความ "สินค้าสิ้นเปลือง {N} รายการ" ใต้ชื่อ (ดึงเข้าตะกร้าอัตโนมัติ)

4. ใช้สิทธิ์แพ็กเกจ (Redeem)

ค่าบริการต่อการใช้สิทธิ์: แพ็กเกจบางอย่างคิดค่าบริการทุกครั้งที่มาใช้สิทธิ์ (เช่น ค่าฉีด) ตั้งได้ที่หน้าแพ็กเกจ ช่อง "ค่าบริการต่อการใช้สิทธิ์" — พอพนักงานกดใช้สิทธิ์ ระบบเพิ่มบรรทัดค่าบริการเข้าบิลให้เอง 1 ครั้งต่อการใช้ 1 ครั้ง (ไม่ใช่ต่อหน่วยที่ใช้) เก็บเงินผ่าน POS ตามปกติ และถ้ายกเลิกการใช้สิทธิ์ บรรทัดค่าบริการถูกถอนออกให้ด้วย

สิทธิ์ที่นับเป็นหน่วยย่อย: สิทธิ์ที่ซื้อเป็นขวด/กล่องแล้วใช้ทีละหน่วยย่อย (เช่น ซื้อ 1 ขวด 20 mg ใช้ครั้งละ 2.5 mg) ระบบตัดเฉพาะส่วนที่ใช้จริง ไม่ตัดทั้งขวด และตัดจากขวดประจำตัวของลูกค้าคนนั้นก่อนเสมอ ยอดคงเหลือแสดงเป็นหน่วยย่อย

แสดงเฉพาะเมื่อเลือกลูกค้าแล้ว — หัวข้อกล่อง "สิทธิ์แพ็คเกจของลูกค้า" พร้อมป้าย "{N} แพ็คเกจ" — "กด 'ใช้สิทธิ์' เพื่อเปิด OPD ตัดใช้สิทธิ์ (ไม่คิดเงิน) แล้วให้หมอลงผลการรักษา"

แต่ละแพ็กเกจแสดงชื่อ+วันหมดอายุ(ถ้ามี)+รายการสิทธิ์ย่อย+ยอดคงเหลือ "เหลือ {จำนวน}{หน่วย}" (ถ้าจองไว้จะมี "(จองไว้ {N}{หน่วย})")

ตัวอย่างหน้าตา: ปุ่ม "ใช้สิทธิ์"
ใช้สิทธิ์ 1cc Filler Program · เหลือ 3 ครั้ง
  1. สิทธิ์แบบเลือกได้ (ป้าย "เลือกได้") → ต้องเลือกจากดรอปดาวน์ "— เลือกรายการที่ใช้ —" ก่อน
  2. สิทธิ์แบบนับหน่วย (เช่น cc/ml) → กรอกจำนวนแล้วกด "ใช้สิทธิ์ {จำนวน} {หน่วย}"
  3. สิทธิ์แบบนับครั้ง → กด "ใช้สิทธิ์" ตรงๆ (ครั้งละ 1 เสมอ)
  4. ยืนยันกล่อง "เปิด OPD เพื่อตัดใช้สิทธิ์ ... (ไม่คิดเงิน) ใช่หรือไม่?"
  5. ระบบเปิดเคส OPD มูลค่า ฿0 ตัดสิทธิ์อัตโนมัติ แล้วพาไปหน้า EMR ของเคสนั้น
ตัวอย่างหน้าตา: สิทธิ์แบบ "เลือกได้" — ดรอปดาวน์ "— เลือกรายการที่ใช้ —" + ช่องกรอกหน่วย
Filler Programเลือกได้เหลือ 3 ครั้ง
— เลือกรายการที่ใช้ —
1 cc ใช้สิทธิ์ 1 cc

ป้าย "เลือกได้" = ต้องเลือกจากดรอปดาวน์ก่อน ปุ่มใช้สิทธิ์ถึงกดได้ · แบบนับหน่วยกรอกจำนวนก่อน

ลูกค้าที่ไม่มีสิทธิ์เหลือเลยขึ้น "ลูกค้ารายนี้ไม่มีสิทธิ์คงเหลือ"

5. ตะกร้าสินค้า ("รายการขาย")

หัวกล่อง "รายการขาย ({จำนวนรายการ})" — ปุ่ม "ล้างตะกร้า" (ต้องยืนยัน) เมื่อมีของในตะกร้า — ตะกร้าว่าง: "ยังไม่มีรายการ / เลือกเคสหรือสินค้า/บริการเพื่อเพิ่ม"

ตัวอย่างหน้าตา: ตะกร้าสินค้า "รายการขาย" (ทั้งใบ)
รายการขาย (1)

โบท็อกซ์หน้าผาก

฿3,999 × 1

1
เข็ม 30G × 1 ฿0
ยอดรวม:฿3,999.00
ยอดสุทธิ:฿3,999.00
ชำระเงิน

รายการย่อยสินค้าสิ้นเปลืองสีเขียว ฿0 (ต้นทุน ไม่ใช่ยอดขาย) · ปุ่ม −/จำนวน/+ ต่อแถว · ยอดรวม/สุทธิ + ปุ่ม "ชำระเงิน"

5.1 ปรับจำนวน / ลบรายการ

แต่ละบรรทัดมีปุ่ม −/จำนวน/+ และถังขยะ — รายการที่มาจากเคสเดิม (เคสรอปิด) ปรับ/ลบไม่ได้ (ปุ่มเทา ทูลทิป "ปรับจำนวนรายการจากเคสไม่ได้") ต้องแก้ที่ EMR

5.2 สินค้าสิ้นเปลือง (รายการย่อย)

บริการบางรายการดึงสินค้าสิ้นเปลืองผูกมาอัตโนมัติ แสดงเยื้องใต้บริการหลัก พื้นเขียวอ่อน ปรับ/ลบแยกได้ (ราคา ฿0 เป็นรายการต้นทุน ไม่ใช่ยอดขาย)

5.3 ผู้ให้บริการรายการนี้ (หมอ/พยาบาล/ผู้ช่วย ต่อบริการ)

ทุกบรรทัดบริการมีแถบพับเก็บ "ผู้ให้บริการรายการนี้" (ปิดโดยค่าเริ่มต้น):

บทบาทปุ่ม/ป้าย
หมอ (เลือกได้ 1 คน)"เลือกหมอ" / ว่าง = "— เลือกหมอ —"
พยาบาล (เลือกได้หลายคน)"เลือกพยาบาล" / ว่าง = "— ไม่ระบุพยาบาล —"
ผู้ช่วย (เลือกได้หลายคน)"เลือกผู้ช่วย" / ว่าง = "— ไม่ระบุผู้ช่วย —"

หมอเลือกได้คนเดียว (เลือกใหม่แทนที่คนเดิม) พยาบาล/ผู้ช่วยแตะสลับเลือกได้หลายคน มีปุ่ม "ล้างทั้งหมด" — การเลือกที่นี่มีผลทันที ไม่ต้องรออนุมัติ

ตัวอย่างหน้าตา: ดรอปดาวน์เลือกหมอ/พยาบาล/ผู้ช่วย (assign งาน)
เลือกหมอ (ไม่บังคับ)
— เลือกหมอ —
เลือกพยาบาล (ไม่บังคับ)
น้องมิ้นท์

ว่าง = ตัวอักษรเทา "— เลือกหมอ —" · เลือกแล้ว = พื้น/กรอบสีตามบทบาท (หมอฟ้า · พยาบาลชมพู · ผู้ช่วยม่วง)

5.4 แก้ไขราคาแมนนวล (ต่อรายการ)

เฉพาะบรรทัดบริการจากเคสเดิม (เคสรอปิด) — ลิงก์ "แก้ราคา" ข้างราคา ราคาหลักยังแสดงคู่กันเสมอพร้อมป้ายเหลืองอำพัน "แก้ราคา"

ขั้นตอน: กด "แก้ราคา" → หน้าต่าง "แก้ไขราคาแมนนวล" → กรอก "ราคาใหม่ (บาท)" + "เหตุผล *" (บังคับ) → "บันทึกราคา" — ระบบบันทึกประวัติผู้แก้ไข วันเวลา ราคาเดิม-ใหม่ และเหตุผลไว้ตรวจสอบย้อนหลังเสมอ

5.5 เลือก Lot (สินค้าคุมล็อต)

ช่อง "เลือก Lot:" ค่าเริ่มต้น "เลือกอัตโนมัติ (FIFO)" แต่ละล็อตแสดงเลขล็อต+คงเหลือ+วันหมดอายุ (ใกล้หมดอายุภายใน 90 วันมีจำนวนวันแทรก) ไม่มีล็อตพอสต็อก → ข้อความแดง "ไม่มีล็อตที่มีสต็อกเพียงพอ" เลือกไม่ได้

6. ผู้ขาย (Sale)

ป้ายหัวข้อ "ผู้ขาย (Sale)" — "ค่าเริ่มต้น = ผู้เข้าสู่ระบบ" ดรอปดาวน์เลือกพนักงานในสาขา ค่าเริ่มต้นชื่อผู้ล็อกอิน ("(ฉัน)")

มีสิทธิ์กำหนดผู้ขายได้ตรงๆ (super_admin/ผู้มีสิทธิ์จัดการสิทธิ์): เลือกใครมีผลทันที "✓ บันทึกผู้ขายเป็น {ชื่อ} แล้ว — จะมีผลทันทีที่เปิดเคส"

ไม่มีสิทธิ์นั้น (พนักงานทั่วไป): เลือกคนอื่นขึ้นคำเตือนทันที "⏳ ต้องรออนุมัติ — เคสจะเปิดในชื่อของคุณก่อน และระบบจะส่งคำขอเปลี่ยนผู้ขายให้ผู้มีสิทธิ์อนุมัติ" (ส่งทันทีที่เลือก ไม่ต้องรอกดชำระเงิน):

สถานะข้อความที่แสดง
กำลังส่ง"กำลังส่งคำขอเปลี่ยนผู้ขาย…"
รออนุมัติ"⏳ ส่งคำขอเปลี่ยนผู้ขายเป็น {ชื่อ} แล้ว — รออนุมัติที่เมนู 'รวมการอนุมัติ'"
อนุมัติแล้ว"✅ อนุมัติแล้ว — ผู้ขายของบิลนี้คือ {ชื่อ}"
ไม่อนุมัติ"❌ ไม่อนุมัติให้เปลี่ยนเป็น {ชื่อ}" (+เหตุผลถ้ามี) — "ผู้ขายของบิลนี้ยังเป็นคุณ"

ระบบตรวจสอบสถานะให้อัตโนมัติทุก 5 วินาทีโดยไม่ต้องรีเฟรชหน้า เปลี่ยนกลับมาเลือกตัวเองจะยกเลิกคำขอที่ส่งไปให้อัตโนมัติ

7. ค่าธรรมเนียม / ยอดสุทธิ (ในตะกร้า)

อัตราค่าธรรมเนียม: "ไม่คิดค่าธรรมเนียม (0%)" / 3% / 5% / 7% / 10% / "กำหนดเอง" — ใช้กรณีคิดค่าธรรมเนียมบัตร ไม่ใช่ภาษี

7.1 ส่วนลดรายการ vs ส่วนลดทั้งบิล — คนละอย่าง

ระบบมีส่วนลด 2 ระดับ และแยกกันในรายงาน อย่าใช้สลับกัน:

แบบใส่ตรงไหนใช้เมื่อไหร่ผลต่อรายงาน
ส่วนลดรายการ ที่แถวสินค้า/บริการนั้น ๆ ในตะกร้า ลดเฉพาะบางรายการ เช่น บริการนี้ลด 10% แต่ตัวอื่นราคาเต็ม ผูกกับรายการนั้น — รายงานยอดขายรายบริการเห็นราคาที่ลดแล้ว
ส่วนลดทั้งบิล ท้ายตะกร้า ก่อนกดชำระเงิน ลดรวมทั้งใบ เช่น ลูกค้าเก่าลดให้ ฿200 ทั้งบิล แยกเป็นยอด "ส่วนลดท้ายบิล" ในรายงานสรุปยอดขาย ไม่ไปเกลี่ยลงรายการ
ทำไมต้องแยก: รายงานยอดขายรายบริการใช้ราคาหลังส่วนลดรายการ ถ้าเอาส่วนลดทั้งบิลไปใส่ที่รายการแทน ตัวเลขรายบริการจะเพี้ยน และค่ามือหมอที่คิดจากยอดจริงจะเพี้ยนตามไปด้วย
ตัวอย่างหน้าตา: ดรอปดาวน์อัตราค่าธรรมเนียม + แถวสรุปยอด
อัตราค่าธรรมเนียม 3%
ยอดรวม:฿6,499.00
ค่าธรรมเนียม (3%):฿194.97
ยอดสุทธิ:฿6,693.97

ดรอปดาวน์: ไม่คิด (0%) / 3% / 5% / 7% / 10% / กำหนดเอง — ค่าธรรมเนียมบัตร ไม่ใช่ VAT

แถวสรุปยอด: ยอดรวม / ค่าธรรมเนียม ({%}%) / ยอดสุทธิ (ตัวใหญ่)

แก้ไขยอดสุทธิ (เฉพาะแอดมิน, เฉพาะเคสที่มีอยู่แล้ว): ลิงก์ "แก้ไขยอดสุทธิ" → กรอก "ยอดสุทธิใหม่" + "เหตุผล *" → "บันทึกยอดสุทธิ" — ยอดเดิมแสดงขีดฆ่าคู่กับยอดใหม่เสมอ

ปุ่มใหญ่ล่างสุด "ชำระเงิน" — กดไม่ได้ (จาง) ถ้าตะกร้าว่างหรือยังไม่ได้เลือกลูกค้า

8. ชำระเงิน — ภาพรวมหน้าต่าง

กด "ชำระเงิน" เปิดหน้าต่าง "ชำระเงิน" 3 ขั้นตอน: เลือกลูกค้ารับชำระสำเร็จ (ข้ามขั้นแรกอัตโนมัติถ้าเลือกลูกค้าไว้แล้ว)

8.1 เลือกลูกค้า — ช่องค้นหา "กรอกชื่อ HN เบอร์โทร หรือเลขบัตรประชาชน" หรือปุ่ม "ลูกค้า Walk-in" (ไม่สะสมแต้ม) / "+ ลูกค้าใหม่" (เปิดแท็บใหม่ ไป Redeem ต้องสร้างที่เมนูลูกค้าแล้วกลับมาค้นหา) — กด "ถัดไป — รับชำระ"

8.2 รับชำระ — ส่วนบน — แถบสรุปลูกค้า+ลิงก์ "เปลี่ยนลูกค้า" · กล่อง "โปรโมชัน / ส่วนลดสมาชิก" (ค้นหาอัตโนมัติ, ช่อง "มีรหัสคูปอง?" + ปุ่ม "ใช้คูปอง", ปุ่ม "สร้างคูปองส่วนลด" เฉพาะกิจ เลือกใช้ทั้งบิล/เฉพาะรายการ) · สรุปรายการ+ยอดรวม/ค่าธรรมเนียม/ส่วนลด/ยอดสุทธิ

9. รูปแบบการชำระ

ส่วน "รูปแบบการชำระ" (เฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ — ถ้าไม่เปิด บังคับชำระเต็มจำนวนเสมอ):

ตัวเลือกคำอธิบายผลลัพธ์
"ชำระเต็มจำนวน"รับชำระทั้งบิลตอนนี้ปิดบิลทันที
"ชำระบางส่วน"จ่ายบางส่วน เหลือไปเคสรอชำระส่วนที่เหลือไปแท็บ "เคสรอปิด"
"เข้ารับบริการก่อน"ยังไม่ชำระ — ไปเคสรอชำระยอดทั้งหมดค้างที่ "เคสรอปิด"
"มัดจำ"รับมัดจำ เหลือไปเคสรอชำระเคสไปอยู่แท็บ "เคสมัดจำ"
ตัวอย่างหน้าตา: ชิปเลือกรูปแบบการชำระ
ชำระเต็มจำนวน ชำระบางส่วน มัดจำ เข้ารับบริการก่อน

ชำระบางส่วน: กรอก "ยอดที่ชำระตอนนี้ *" (ลิงก์ลัด "ครึ่งหนึ่ง") ระบบคำนวณ "คงเหลือไปเคสรอชำระ: ฿{ยอด}" อัตโนมัติ

มัดจำ: กรอก "ยอดมัดจำที่รับตอนนี้ *" (ต้องน้อยกว่ายอดเต็ม และต้องมีลูกค้าเป็นสมาชิก ไม่รองรับ Walk-in) — "มัดจำแล้ว ฿{X} — เหลือเก็บภายหลัง ฿{Y}" (บันทึกเป็นเครดิตมัดจำผูก HN + ออกใบเสร็จมัดจำ)

เข้ารับบริการก่อน: ไม่มีช่องเงินให้กรอก — "เข้ารับบริการก่อน — ยังไม่ชำระเงิน / ยอดทั้งหมด ฿{X} จะถูกบันทึกเป็นยอดค้างชำระ..."

10. ช่องทางการชำระเงิน

หัวข้อ "เลือกช่องทางการชำระเงิน" — "แตะเพื่อเลือกช่องทาง (เลือกได้หลายช่องทาง · แบ่งจ่ายหลายใบต่อช่องทางได้)" — ปุ่มช่องทาง: QR พร้อมเพย์, บัตรเครดิต (เต็ม/ผ่อน), กระเป๋าเงิน/ผ่อน (เมื่อเปิดใช้เครื่อง Beam), เงินสด, เงินโอน — ถ้าลูกค้ามีกระเป๋าเงินสะสม (walletBalance > 0) มีแถบเด่น "ใช้กระเป๋าเงินสมาชิก"

ตัวอย่างหน้าตา: ปุ่มช่องทางการชำระเงิน
เงินสด บัตรเครดิต QR พร้อมเพย์ เงินโอน
ตัวอย่างหน้าตา: multi-tender — จัดสรรยอดหลายช่องทาง + แบ่งจ่ายหลายใบ (−/+)
เงินสด ฿500
บัตรเครดิต แบ่งจ่าย 2 ใบ2
ขาดอีก ฿700สุทธิ ฿1,200

เลือกได้หลายช่องทางในบิลเดียว · ปุ่ม "ชำระเงิน" กดไม่ได้จนยอดจัดสรรครบ (มีข้อความ "ขาดอีก ฿…" เสมอ) · บัตร/โอน แบ่งจ่ายหลายใบด้วย −/+

10.1 เงินสด

ช่อง "รับเงินสด (ยอดชำระด้วยเงินสด: ฿{X}) *" + ปุ่มลัด "ใช้ยอดพอดี" — เกิน: "เงินทอน: ฿{X}" · น้อยกว่า: "เงินสดไม่พอ ขาดอีก ฿{X}" (ยืนยันไม่ได้จนครบ)

ตัวอย่างหน้าตา: ช่องรับเงินสด + ปุ่ม "ใช้ยอดพอดี" + เงินทอน
รับเงินสด *฿1,500
ใช้ยอดพอดี
เงินทอน: ฿300

รับมากกว่ายอด = "เงินทอน" อัตโนมัติ · น้อยกว่า = "เงินสดไม่พอ ขาดอีก ฿…" (ยืนยันไม่ได้จนครบ)

10.2 เงินโอน

"ช่องทางรับเงินโอน" — คลินิกที่ใช้ Beam เลือกรับผ่านเครื่อง (QR พร้อมเพย์/K PLUS/SCB EASY/Krungsri/Bangkok Bank/MAKE by KBank) หรือติ๊ก "รับโอนตรงเข้าบัญชีคลินิก (แนบสลิป — ไม่ผ่านเครื่อง Beam)" — แนบสลิป (ไม่บังคับ, แนบทีหลังได้) ไม่แนบสลิปไม่บล็อกการชำระเงิน

10.3 บัตรเครดิต

"รายละเอียดบัตรเครดิต" เลือก "ธนาคารที่รับชำระ" และ "ผ่อนกี่เดือน" (เต็มจำนวน / ผ่อน 3, 6, 10 เดือน / กำหนดเอง)

ตัวอย่างหน้าตา: เลือกธนาคาร + จำนวนงวดผ่อน (บัตรเครดิต)
ธนาคารที่รับชำระKBank
เต็มจำนวน ผ่อน 3 ผ่อน 6 ผ่อน 10

ธนาคารมาจากรายการที่แอดมินตั้งไว้ · งวดผ่อน เต็ม/3/6/10/กำหนดเอง

10.4 QR พร้อมเพย์

  1. "กำลังสร้าง QR PromptPay…"
  2. QR ขึ้น "สแกนพร้อมเพย์เพื่อชำระ ฿{ยอด}" ตรวจสอบทุก 3 วินาที — ไม่ต้องกดยืนยันเอง
  3. จ่ายสำเร็จ → "ชำระเงินสำเร็จ ✓" ไปหน้าใบเสร็จอัตโนมัติ
  4. หมดเวลา/ไม่สำเร็จ → "QR หมดอายุแล้ว" / "ชำระเงินไม่สำเร็จ" + ปุ่ม "สร้าง QR ใหม่"
ตัวอย่างหน้าตา: แผง QR พร้อมเพย์ + สถานะตรวจสอบอัตโนมัติ

สแกนพร้อมเพย์ ฿6,499

● ตรวจสอบทุก 3 วิ (อัตโนมัติ)

ไม่ต้องกดยืนยันเอง · จ่ายสำเร็จ = "ชำระเงินสำเร็จ ✓" ไปใบเสร็จอัตโนมัติ · หมดเวลา = ปุ่ม "สร้าง QR ใหม่"

10.5 ชำระผ่านเครื่อง Beam (ทีละรายการ)

เฉพาะคลินิกที่เปิดใช้เครื่องรับบัตร/QR Beam Bolt — หลักการ: เงินสดรับที่เคาน์เตอร์โดยตรง ส่วนที่เหลือ (บัตร/QR/e-wallet/โอน) ผ่านเครื่องทีละรายการ

แบ่งจ่ายหลายใบ: แต่ละช่องทางมีปุ่ม −/+ ป้าย "แบ่งจ่าย … ใบ" (เช่น จ่าย 2 บัตร แยกธนาคาร/เดือนผ่อนได้)

  1. สถานะเริ่มต้น: ปุ่ม "ส่งไปที่เครื่อง"
  2. กำลังส่ง: "กำลังส่งไปที่เครื่อง…"
  3. รอลูกค้าจ่าย: "รอลูกค้าชำระที่เครื่อง Beam — ระบบยืนยันอัตโนมัติ" (มีปุ่ม "ยกเลิก")
  4. สำเร็จ: "{รายการ} · ฿{ยอด} — ชำระที่เครื่องสำเร็จ ✓" → บันทึกลงบิลอัตโนมัติ → "ชำระและบันทึกแล้ว ✓"
  5. เครื่องรับเงินสำเร็จแต่บันทึกลงบิลไม่สำเร็จ (พบยากแต่สำคัญ) → "เงินเข้าที่เครื่องแล้ว แต่บันทึกลงบิลไม่สำเร็จ" + "ห้ามให้ลูกค้าชำระซ้ำ — กด 'บันทึกอีกครั้ง' เท่านั้น"

ต้องทำทีละรายการตามลำดับ ครบทุกรายการปุ่มยืนยันเปลี่ยนเป็น "เสร็จสิ้น (ชำระผ่านเครื่องครบแล้ว)" — ปิดหน้าต่างระหว่างยังชำระไม่ครบ ระบบเตือนก่อนเสมอ (เงินที่รับแล้วไม่หายแม้ปิดหน้าจอ บิลจะค้างเป็น "เคสรอชำระ")

10.6 กระเป๋าเงินสมาชิก / เครดิตลูกค้า

ต้องเลือกลูกค้าที่เป็นสมาชิกก่อน (ใช้กับ Walk-in ไม่ได้) แสดงยอดคงเหลือก่อนติ๊กใช้ — ยอดไม่พอขึ้น "เครดิตไม่พอ — ขาดอีก ฿{X}" ต้องเลือกช่องทางอื่นจ่ายส่วนที่ขาด — บางระบบมีสวิตช์ "ใช้โบนัส" แยกหักเครดิตโบนัสกับเครดิตเงินสด

ตัวอย่างหน้าตา: กระเป๋าเงินสมาชิก (ยอดคงเหลือ + สวิตช์ใช้โบนัส)

กระเป๋าเงินสมาชิก

เงินสด ฿5,000 · โบนัส ฿1,200

฿6,200
ใช้โบนัสก่อน

สมาชิกเท่านั้น (Walk-in ใช้ไม่ได้) · ยอดไม่พอ = "เครดิตไม่พอ — ขาดอีก ฿… กรุณาเลือกชำระส่วนที่ขาดด้วยวิธีอื่น" ต้องเสริมช่องทางอื่น · สวิตช์แยกเงินสด/โบนัส

10.7 ช่องทางอื่น (เพิ่มเอง)

เช่น ทรูวอลเล็ท คูปอง/บัตรกำนัล — ปุ่ม "เพิ่มช่องทางอื่น" กรอกประเภท/ชื่อช่องทาง/จำนวนเงิน/เลขอ้างอิงต่อแถว ลบแถวด้วย X — โหมดละเอียด (หลายรายการ/หลายสลิป): แยกช่องทางเดียวเป็นหลายบรรทัดพร้อมเลขอ้างอิง/สลิปต่อบรรทัด (ใช้ร่วมกับกระเป๋าเงินสมาชิก/เครดิตลูกค้าไม่ได้ ต้องปิดโหมดนี้ก่อน)

10.8 หมายเหตุ / ออกบิลย้อนหลัง

ช่อง "หมายเหตุ" พิมพ์อิสระ — ผู้มีสิทธิ์ "ออกบิลย้อนหลัง" (pos.sale.backdate) เห็นช่อง "วันที่ใบเสร็จ/ใบกำกับภาษี (ออกย้อนหลัง)" (เลือกวันที่ในอดีตได้เท่านั้น พร้อมคำเตือนว่าจะลงบัญชี/ภาษีตามวันที่เลือก)

10.9 ยืนยันชำระเงิน

ปุ่มล่างสุดเปลี่ยนข้อความตามโหมด: "ยืนยันการชำระเงิน" / "ยืนยันชำระบางส่วน" / "ยืนยันรับมัดจำ" / "เข้ารับบริการก่อน (ยังไม่ชำระ)" — กดไม่ได้จะมีข้อความอธิบายเสมอว่าขาดอะไร ไม่มีทางเจอปุ่มค้างกดไม่ได้โดยไม่รู้สาเหตุ

ตัวอย่างหน้าตา: ปุ่มยืนยันชำระเงิน (เปลี่ยนข้อความตามโหมด) + สถานะกดไม่ได้
ยืนยันการชำระเงิน ยืนยัน — ยังจัดสรรไม่ครบ (ขาด ฿700)

ข้อความปุ่มตามโหมด (ชำระเต็ม/บางส่วน/มัดจำ/เข้ารับก่อน) · กดไม่ได้ = จาง + บอกเหตุผลเสมอ

11. พักบิล (Hold Bill)

เฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ — ใช้เมื่อยังตัดสินใจช่องทางชำระไม่ได้ หรือลูกค้าต้องออกไปก่อน

พักบิล (จากหน้าต่างชำระเงิน): ปุ่มโปร่ง "พักบิล (เก็บไว้ทำต่อทีหลัง)" → กรอกหมายเหตุ (ไม่บังคับ) → "พักบิลไว้" — เงินที่กดชำระผ่านเครื่องไปแล้วบางส่วนจะไม่หาย

ตัวอย่างหน้าตา: ปุ่ม "พักบิล" + แท็บพักบิลพร้อมตัวเลขค้าง + ปุ่ม "ทำต่อ"
พักบิล (เก็บไว้ทำต่อทีหลัง) พักบิล 2 ทำต่อ

ทำต่อ (จากแท็บ "พักบิล"): แต่ละบิลแสดงเป็นการ์ด ชื่อลูกค้า/HN, ยอดรวม, สถานะชำระ — กด "ทำต่อ":

  • ชำระครบแล้ว รอออกบิล: กด "เสร็จสิ้น — ออกบิล"
  • ยังมียอดค้าง: เลือกช่องทาง หรือกด "รับส่วนที่เหลือเป็นเงินสด ฿{X} แล้วออกบิล"
  • ยกเลิกบิลที่พักไว้: ปุ่ม "ยกเลิกรายการ (คืนเงิน)" (ถ้ามีเงินเข้าเครื่องแล้ว เปลี่ยนเป็น "ยกเลิก/คืนเงิน (ผ่านหน้ายกเลิกเคส)")

พยายามปิดหน้าต่างทั้งที่ชำระครบแล้วแต่ยังไม่ได้ออกบิล ระบบเตือนก่อนเสมอ ให้เลือก "เสร็จสิ้น — ออกบิลเลย" หรือ "ปิดไว้ก่อน (เก็บในแท็บพักบิล)"

12. ใบเสร็จ (หลังชำระเงินสำเร็จ)

หัวข้อ "ชำระเงินสำเร็จ" แสดงรหัส/เลขที่การขาย เลขที่ใบเสร็จ สรุปรายการ (สินค้า/เวชภัณฑ์ไม่ขึ้นให้ลูกค้าเห็นในใบสรุปนี้ แต่บันทึกในระบบครบ) และยอดชำระ

ปุ่มทำอะไร
"เปิด OPD ต่อ"เฉพาะบิลที่มีบริการ/แพ็กเกจ — พาไปหน้า EMR เปิดเคสต่อทันที
"พิมพ์ใบเสร็จ"ส่งพิมพ์ไปเครื่องพิมพ์ใบเสร็จ (thermal) อัตโนมัติ ไม่มีเครื่องพิมพ์ตั้งค่าไว้จะเปิดหน้าต่างพิมพ์ของเบราว์เซอร์แทน — ใบแรกเป็นต้นฉบับ ไม่มีตรา "สำเนา"
"ส่งใบเสร็จ LINE"ส่งใบเสร็จให้ลูกค้าทาง LINE
"ขายใหม่"ล้างหน้าจอเริ่มขายบิลถัดไป
ปิด (X)ปิดหน้าต่างเฉยๆ ไม่มีผลอะไรเพิ่ม
ตัวอย่างหน้าตา: ปุ่ม "เปิด OPD ต่อ" (CTA หลักของหน้าใบเสร็จ)
เปิด OPD ต่อ

พิมพ์ซ้ำภายหลัง (จากเมนูค้นหาใบเสร็จ/รายงาน) จะมีแถบ "สำเนา (COPY)" + "พิมพ์ซ้ำครั้งที่ {N}" กำกับเสมอ

ตัวอย่างหน้าตา: ป้าย "สำเนา (COPY)" บนใบเสร็จพิมพ์ซ้ำ
AirClinic — ใบเสร็จรับเงิน
เลขที่ #RC-108824
ยอดชำระ: ฿1,500.00
สำเนา (COPY)
พิมพ์ซ้ำครั้งที่ 1

13. เคสรอปิด

ค้นหาด้วยหมายเลข: ช่อง "ค้นหาข้อมูลการเข้ารับบริการ (Visit Case)" placeholder "กรอกหมายเลขเคส..."

แต่ละการ์ดแสดงชื่อบริการ/แพ็กเกจเด่นเป็นหัวการ์ด เลขเคสย่อเป็นชิปเล็ก พร้อมเวลาเปิดเคสและป้าย "ค้าง {ชม./วัน}" (เหลือง ≥8 ชม., แดง ≥24 ชม.) ชื่อลูกค้า/HN, ผู้ให้บริการ, "ยอดค้างชำระ" ตัวใหญ่ (ถ้าจ่ายบางส่วนแล้ว: "ชำระแล้ว ฿X / รวม ฿Y") เคสมีมัดจำมีชิป "มัดจำ ฿{X}"

ตัวอย่างหน้าตา: ป้ายอายุเคสค้าง + ป้ายมัดจำ
ค้าง 8 ชม. ค้าง 26 ชม. มัดจำ ฿2,000

ขั้นตอน: คลิกการ์ด → รายการทั้งหมดถูกดึงเข้าตะกร้าอัตโนมัติ (ผูกลูกค้าให้ทันที) → กด "ชำระเงิน" ตามปกติ

ปุ่มบนการ์ด (ไม่ต้องเปิดเคสก็กดได้): "ปิดเคส" (ปิดสถานะแม้ยังมียอดค้าง มีกล่องยืนยันบอกยอดค้างก่อนปิด) · "ยกเลิก" (เปิดหน้ายกเลิกบิล/คืนเงิน — หัวข้อ 15)

ตัวกรอง "ทั้งหมด / มัดจำค้าง" (เฉพาะระบบที่เปิดฟีเจอร์มัดจำ) และปุ่ม "รีเฟรชรายการ"

14. เคสมัดจำ

รวมเฉพาะเคสที่รับมัดจำไว้แล้วและยังมียอดค้าง — หัวข้อ "เคสมัดจำ (รับมัดจำแล้ว รอส่วนที่เหลือ)"

การ์ดแต่ละใบแสดงชื่อลูกค้า/HN, เบอร์โทร (กดโทรออกได้ทันที) ป้าย "มัดจำ {N} วัน" (เหลือง ≥30 วัน, แดง ≥90 วัน) และกล่องสรุป "มัดจำแล้ว ฿X" / "ยอดเต็ม ฿Y" / "คงเหลือ ฿Z"

กดปุ่ม "รับชำระต่อ" เพื่อดึงเคสเข้าตะกร้าและไปแท็บ "เคสรอปิด" สำหรับเก็บเงินส่วนที่เหลือ

15. ยกเลิกรายการ (Void) และคืนเงิน (Refund)

15.1 ค้นหาเคสที่จะยกเลิก

กด "ยกเลิกรายการ" ที่หัวหน้าจอ เปิด "ยกเลิกรายการ (Void)" — "ค้นหาเคสที่ต้องการยกเลิก — เคสจบบริการ/หมอทำแล้ว จะไม่แสดงที่นี่"

ค้นหาด้วย "ค้นหา ชื่อ / รหัสเคส / HN" หรือกรองช่วงวันที่ — แต่ละแถวแสดงชื่อลูกค้า, เลขเคส+วันที่, "ชำระแล้ว ฿X · ค้างชำระ ฿Y" (เคสชำระแล้วแต่ยังไม่ให้บริการมีป้าย "ชำระแล้ว · ยังไม่ได้ทำ")

ปุ่มต่อแถว: เคสทั่วไป → "ยกเลิก + คืนเป็นเครดิต" · เคสชำระแล้วแบบพิเศษ (คีย์ผิดคน ฯลฯ) → "ยกเลิก (ไม่คืนเงิน)" (เฉพาะแอดมิน — พนักงานทั่วไปเห็นปุ่มเทากดไม่ได้ พร้อมไอคอนกุญแจ)

ตัวอย่างหน้าตา: ปุ่มยกเลิก/คืนเงินต่อแถว
ยกเลิก + คืนเป็นเครดิต ยกเลิก (ไม่คืนเงิน)

15.2 ยกเลิกบิล (เคสยังไม่ชำระเงิน)

เปิดจากปุ่ม "ยกเลิก" บนการ์ดเคสรอปิด หรือ "ยกเลิก + คืนเป็นเครดิต" — หัวข้อ "ยกเลิกบิล (Void)" กรอก "เหตุผล *" ติ๊ก "คืน Course Entitlement (ถ้ามี)" กด "ยกเลิกบิล" → ยืนยันอีกครั้ง → "ยืนยัน ยกเลิกบิล" — เคสที่มีมัดจำค้างจะคืนมัดจำเข้าเครดิตลูกค้าอัตโนมัติ

15.3 คืนเงิน (เคสชำระเงินแล้ว)

เปิดจากปุ่ม "ยกเลิก" บนเคสที่ชำระแล้ว — หัวข้อเปลี่ยนเป็น "คืนเงิน (Refund)"

  1. ระบบโหลดรายการที่ขายไปในบิลนั้น ("รายการที่ต้องการคืน") — เลือกไว้ให้ครบทุกรายการโดยอัตโนมัติ (คืนเต็ม) หรือปรับเองได้
  2. คืนเงินบางส่วนได้ — ปรับ "จำนวนที่คืน:" ต่อรายการด้วย −/+ และปุ่ม "เลือกทั้งหมด"/"ยกเลิกทั้งหมด"
  3. รายการที่เป็นสินค้า ต้องเลือก "สภาพสินค้า (กำหนดการคืนสต็อก):" — "ซีล/ไม่ได้เปิด — คืนสต็อก" / "เปิดแล้ว — ตัดทิ้ง (Waste)" / "เสียหาย — ตัดทิ้ง (Waste)"
  4. เลือก "วิธีคืนเงิน" — เงินสด / บัตรเครดิต-เดบิต / เครดิตในระบบ (Store Credit) (ไม่จำเป็นต้องตรงกับช่องทางที่จ่ายมาตอนแรก)
  5. ติ๊ก "ยกเลิก Commission ของพนักงาน" ถ้าต้องการยกเลิกค่าคอมมิชชั่นที่ผูกกับบิลนี้ด้วย
  6. กรอกเหตุผล (บังคับ) → "ดำเนินการคืนเงิน" → ยืนยัน → "ยืนยัน คืนเงิน"
  7. สำเร็จ → "คืนเงินสำเร็จ" พร้อมสรุปยอดคืนและรายการที่คืน
PIN ยืนยันถ้าคลินิกตั้งค่า PIN ไว้ ทั้งการยกเลิกและคืนเงินจะมีช่อง "รหัส PIN ยืนยัน *" ที่ต้องกรอกก่อนกดยืนยันเสมอ

15.4 ยกเลิก (ไม่คืนเงิน) — เฉพาะแอดมิน

ใช้เมื่อบิลชำระเงินแล้วแต่คีย์ผิดคน — ยกเลิกโดยไม่คืนเงินและไม่เข้าเครดิตลูกค้า เงินยังคงถูกบันทึกเป็นรายรับตามเดิม พนักงานต้องคีย์รับเงินใหม่ให้ลูกค้าที่ถูกต้องแยกที่ POS

กรอก "เหตุผล *" และ "รหัสพนักงาน *" (PIN บังคับเสมอสำหรับบิลที่ชำระแล้ว) กด "ยืนยัน ยกเลิก (ไม่คืนเงิน)" — PIN ผิดหรือไม่มีสิทธิ์ขึ้น "รหัสพนักงานไม่ถูกต้อง หรือไม่มีสิทธิ์ (เฉพาะแอดมิน)"

ตัวอย่างหน้าตา: ตัวเลือกวิธีคืนเงิน + ช่อง PIN ยืนยัน
เงินสด บัตรเครดิต-เดบิต เครดิตในระบบ
รหัส PIN ยืนยัน * • • • •
ดำเนินการคืนเงิน

16. สรุปบทบาท/สิทธิ์ที่เกี่ยวข้อง

การทำงานใครใช้ได้
ขายทั่วไป, เปิดเคส, เลือกลูกค้า/สแกนบัตร, ใช้สิทธิ์แพ็กเกจ, รับชำระทุกช่องทาง, ยกเลิกบิลที่ยังไม่ชำระ, คืนเงินบิลที่ชำระแล้ว (มีเงื่อนไข PIN ถ้าตั้งไว้)พนักงาน POS ทุกตำแหน่งที่มีสิทธิ์เข้าเมนู
กำหนด "ผู้ขาย (Sale)" เป็นคนอื่นแบบมีผลทันที (ไม่ต้องรออนุมัติ)ผู้มีสิทธิ์ rbac.permission.manage หรือ super_admin — พนักงานทั่วไปเลือกได้แต่ต้องรออนุมัติ
แก้ไขยอดสุทธิทั้งบิลแอดมิน (admin / super_admin)
ยกเลิก (ไม่คืนเงิน) สำหรับบิลชำระแล้วแอดมินเท่านั้น (พนักงานทั่วไปเห็นปุ่มแต่กดไม่ได้)
ออกบิลย้อนหลัง (เลือกวันที่ใบเสร็จเอง)ผู้มีสิทธิ์ pos.sale.backdate
แก้ไขราคาแมนนวลต่อรายการต้องระบุเหตุผลทุกครั้ง (บันทึกประวัติ ไม่จำกัดเฉพาะแอดมิน ขึ้นกับสิทธิ์ที่ระบบตั้งไว้)
หมายเหตุความครบถ้วน: มีหน้าจอ "CustomerBindDrawer" อยู่ในโค้ดแต่ไม่ได้ถูกเรียกใช้จากหน้าจอ POS จริงในปัจจุบัน จึงไม่รวมอยู่ในคู่มือนี้ — ขั้นตอน "เลือกลูกค้า" ที่ใช้จริงคือหัวข้อ 2.1 และ 8.1 ข้างต้น
อ้างอิงทุกเมนู

📋 ประวัติการรักษา (EMR)

เคสการรักษา, ชาร์ต, บันทึกแพทย์, ยินยอม และการปิดเคส

0. เข้าถึงเมนู

เข้าจากเมนู: กลุ่ม งานประจำวัน → ประวัติการรักษา (EMR)

เมนูนี้แสดงเฉพาะบทบาท หมอ / พยาบาล / ผู้ช่วย / BT (และเภสัชกร) — ระบบเรียกกลุ่มนี้ว่า persona "คลินิก" ผู้ใช้ role admin/super_admin เห็นเมนูเต็มเสมอ ส่วนบทบาทอื่น (ฝ่ายขาย/แคชเชียร์/ธุรการ) จะไม่เห็นเมนูนี้ในแถบด้านข้าง

  • จอกว้าง (desktop/tablet แนวนอน): เห็น "รายชื่อคนไข้" (patient roster) 2 คอลัมน์ — รายชื่อซ้าย + รายละเอียดขวา
  • จอแคบ (มือถือ/tablet แนวตั้ง): เห็น "EMR · เคส" (case worklist) แบบ list เต็มจอ พร้อมแถบ เคสของฉัน / ทั้งหมด

ทั้งสองอุปกรณ์เชื่อมเข้าเคสเดียวกัน และหน้ารายละเอียดเคสเป็นหน้าเดียวกันไม่ว่าจะเข้าจากทางไหน

กฎสำคัญหน้า EMR ไม่มีปุ่มสร้างเคสใหม่ — การเปิดเคสใหม่ทำที่หน้า POS เท่านั้น (ลงทะเบียน HN → เลือกหมอ/พยาบาล → เปิดเคส) เพื่อให้ทุกเคสผูกกับการชำระเงิน หน้า EMR มีปุ่ม "สร้างเคสที่ POS" ที่ส่งไปหน้า POS พร้อมข้อมูลลูกค้า (ถ้าเลือกไว้)

1. รายการเคส / Worklist

1.1 จอกว้าง — รายชื่อคนไข้ (Patient Roster)

ส่วนควบคุมรายละเอียด
ช่องค้นหาplaceholder "ค้นหาคนไข้ / HN / เบอร์โทร…" (ค้นฝั่งเซิร์ฟเวอร์ หน่วง 300ms)
ปุ่ม "เฉพาะเคสของฉัน"toggle กรองให้เห็นเฉพาะเคสที่ตัวเองรับผิดชอบ — ถ้านโยบายคลินิกล็อกไว้ (policy "own") ปุ่มจะกลายเป็นชิปข้อความนิ่ง "แสดงเฉพาะเคสของคุณ" ที่กดไม่ได้
dropdown หมวดโน้ตตัวเลือกเริ่มต้น "หมวดโน้ต: ทั้งหมด" — กรองตามหมวดที่ติดไว้ในโน้ตเคส
ตัวกรองช่วงวันที่ (3 แถว)แถว 1: ‹ 1 วัน | วันนี้/วันที่ | 1 วัน › (เลื่อนทีละวัน) · แถว 2: 7 วัน / 30 วัน / ทั้งหมด · แถว 3: ปุ่ม "กำหนดเอง"

ไม่พบคนไข้: ข้อความเปลี่ยนตามเหตุผล "ไม่พบคนไข้ที่ตรงกับคำค้นหา" / "ไม่พบเคสในหมวดโน้ตนี้" / "ยังไม่มีเคสของคุณ" / "ยังไม่มีรายชื่อคนไข้"

รายชื่อคนไข้แต่ละแถวแสดง ชื่อ(+ชื่อเล่น), HN, จำนวนครั้งที่มา, วันที่มาล่าสุด, ป้ายสถานะเคสล่าสุด — เลื่อนลงล่างสุดโหลดเพิ่มอัตโนมัติ (infinite scroll)

1.2 จอแคบ — EMR · เคส (Case Worklist)

หัวหน้าจอ "EMR · เคส" มีไอคอนค้นหา+ตัวกรอง date stepper แบบเดียวกับจอกว้าง (ปัดซ้าย-ขวาเลื่อนวันได้)

ปุ่มความหมาย
เคสของฉัน (พร้อมตัวเลข)เคสที่ตัวเองอยู่ในทีมผู้ทำ
ทั้งหมด (พร้อมตัวเลข)เคสทั้งหมดในช่วงวันที่ที่เลือก

ถ้านโยบายคลินิกล็อก (own) จะเห็นชิปนิ่ง "เคสของฉัน" อันเดียว ไม่มีปุ่ม "ทั้งหมด" ให้กด

ตัวอย่างหน้าตา: แถบสลับ Worklist + ชิปนิ่ง (นโยบาย own = ล็อกเคสของฉัน)
เคสของฉัน 4 ทั้งหมด 18
เคสของฉัน 4 (นโยบายล็อก)

นโยบาย "own" = ชิปม่วงอ่อน+ไอคอนกุญแจ ไม่มีปุ่ม "ทั้งหมด" · ว่าง → ปุ่ม "ดูเคสทั้งหมด" เสมอ ไม่ปล่อยหน้าเปล่า

สถานะรายการว่างมีทางออกเสมอ: ขอบเขต "เคสของฉัน" ว่าง → "วันนี้ยังไม่มีเคสที่มอบหมายให้คุณ" + ปุ่ม "ดูเคสทั้งหมด (N)" / "เมื่อวาน" / "7 วันล่าสุด" · ขอบเขต "ทั้งหมด" ว่าง → "ไม่มีเคสใน [ช่วงวันที่]" + ปุ่ม "กลับวันนี้" และ "เปิดเคสที่ POS" (ถ้ามีสิทธิ์)

บัญชีที่ยังไม่ได้ผูกกับพนักงานในระบบ (ทั้งสองอุปกรณ์) จะเห็นการ์ดเหลืองอำพัน "บัญชีของคุณยังไม่ได้ผูกกับพนักงาน จึงยังไม่เห็นรายการเคส/เคส — กรุณาแจ้งแอดมินให้ผูกบัญชีกับพนักงานในระบบ" แทนรายการว่างเปล่า

2. เปิดเคส — ส่วนหัวคนไข้

จอกว้าง: เมื่อเลือกคนไข้จากรายชื่อ จะมีการ์ดเต็มความกว้างขึ้นด้านบน (ก่อนแผงรายละเอียด) แสดง: ชื่อ+ชื่อเล่น+ระดับสมาชิก(tier)+HN · เพศ/อายุ, กรุ๊ปเลือด, มาล่าสุด · ป้ายแพ้ยาสีแดง (ถ้ามี) · แถบสัญญาณชีพล่าสุด (ความดัน/ชีพจร/อุณหภูมิ/น้ำหนัก/ส่วนสูง — ยังไม่มีข้อมูลขึ้น "ยังไม่มีบันทึกสัญญาณชีพ — เปิด OPD เพื่อบันทึก") · ปุ่ม "เปิด OPD" มุมล่างขวา (disable ถ้าคนไข้ยังไม่มี visit เลย)

ใต้การ์ดนี้เป็น "ประวัติการเข้ารับบริการ (N)" แบบ timeline — แต่ละแถวมีวันที่/ผู้ให้บริการ/ป้ายสถานะ (กำลังดำเนินการ / รอชำระ / ชำระแล้ว · รอปิดเคส / ปิดเคสแล้ว / ยกเลิก / ยกเลิก (ไม่คืนเงิน) / คืนเงินแล้ว), เลขเคส, การวินิจฉัย, บันทึก, ชิปบริการ/แพ็คเกจ และปุ่ม "เปิดเคส"

ตัวอย่างหน้าตา: การ์ดส่วนหัวคนไข้ + ป้ายสถานะ timeline ประวัติการเข้ารับบริการ
สมหญิง ใจดี Gold
HN 68-0042 · หญิง 34 · O
เปิด OPD
กำลังดำเนินการ รอชำระ ปิดเคสแล้ว ยกเลิก

การ์ดหัว = ชื่อ+tier+HN+แพ้ยา+ปุ่มเปิด OPD · ใต้การ์ด = timeline ประวัติ visit พร้อมป้ายสถานะสีตามสถานะเคส

3. หน้ารายละเอียดเคส (Visit Detail)

โครงสร้าง: ส่วนหัวติดจอ (sticky)แถบทีมผู้ดูแลแถบแท็บ 4 แท็บ → เนื้อหาตามแท็บ

3.1 ส่วนหัวติดจอ

แสดงชื่อคนไข้+ระดับสมาชิก+เลข OPD+ป้ายแพ้ยา(ถ้ามี), เลข Visit, ป้ายสถานะเคส, ชิปโน้ตเคส(ถ้ามี), ป้าย "รับโอนจาก HN [เลข]" (ถ้าเป็นเคสรับโอน), วันที่เข้ารับบริการ, ชิปบริการวันนี้

ปุ่มมุมขวา (แถวที่ 1 — การทำงานหลัก):

ปุ่มปรากฏเมื่อทำอะไร
แก้ไขเคส / เสร็จสิ้นเคสกำลังดำเนินการสลับโหมดแก้ไข diagnosis/notes/treatmentPlan
บันทึกอยู่ในโหมดแก้ไขบันทึกการแก้ไข
ปิดเคส (เขียว)ไม่มียอดต้องชำระ หรือชำระครบแล้วปิดเคสตรงนี้ทันที ไม่ต้องผ่าน POS
ส่งไปชำระเงิน (ฟ้า)มียอดค้างชำระส่งเคสไปที่คิว "เคสรอปิด" ของ POS
ชำระเงินเคสสถานะรอชำระพาไปหน้า POS พร้อมโหลดเคสนี้เข้าตะกร้า
ย้อนกลับไปแก้ไขส่งไป POS แล้วแต่ยังไม่มีการชำระเงินดึงเคสกลับมาแก้ไขที่ EMR
เพิ่มย้อนหลังเคสปิดแล้วเปิดฟอร์มเพิ่มรายการที่ลืมบันทึกหลังปิดเคส
แก้ไขเคส (ปิดแล้ว)เคสปิดแล้ว + มีสิทธิ์ ADMINเปิดโหมดลบ/แก้รายการย้อนหลัง (ต้องระบุเหตุผล บันทึกประวัติ)

ปุ่มมุมขวา (แถวที่ 2 — ทำน้อยครั้ง): ยกเลิก + คืนเป็นเครดิต / ยกเลิกเคส, ยกเลิกเคส (ปิดแล้ว) (แอดมิน), เก็บเป็นสิทธิ์ไว้ใช้ภายหลัง (แปลงรายการที่จ่ายแล้วแต่ยังไม่ได้ทำเป็นสิทธิ์แพ็กเกจ), โอนเคสไป HN อื่น (แอดมินเท่านั้น ต้องชำระครบก่อน)

ผู้ใช้ role ฝ่ายขาย/แอดมินเท่านั้นเห็นกล่อง "ยอดรวมเคสนี้" (฿) มุมขวาบน — บทบาทคลินิก (หมอ/พยาบาล/ผู้ช่วย) จะไม่เห็นตัวเลขเงินตรงนี้

ตัวอย่างหน้าตา: ส่วนหัวเคส (ป้ายสถานะ + ชิปแพ้ยา) + ปุ่มการทำงานมุมขวา
สมหญิง ใจดี แพ้ Penicillin กำลังดำเนินการ Visit #04821
แก้ไขเคส ปิดเคส ส่งไปชำระเงิน

ปุ่มปรากฏตามสถานะเคส · ปิดเคส (เขียว) เมื่อไม่มียอดค้าง · ส่งไปชำระเงิน (ฟ้า) เมื่อมียอดค้าง → คิว POS

3.2 แถบทีมผู้ดูแล / ผู้ทำ

อยู่ใต้ส่วนหัวติดจอทันที แสดงชื่อจริงของทีมที่รับผิดชอบเคส แยกป้ายตามบทบาท หมอ: / พยาบาล: / ผู้ช่วย: (ไม่แสดงคำว่า "ฝ่ายขาย" ในตำแหน่งผู้ทำ) ถ้าแต่ละบริการมีผู้ทำต่างกัน จะมีป้าย "ผู้ทำต่างกันรายบริการ" และปุ่ม "แยกรายบริการ"

ปุ่มด้านขวา: "ทีมงานเคส" (แก้ทีมที่ใช้ร่วมกันทั้งเคส) และ "เปลี่ยนเซลล์" (ขอเปลี่ยนพนักงานขายผู้ดูแล — ต้องรอ super_admin อนุมัติ ระหว่างรอขึ้นป้าย "รอยืนยันเซลล์")

ตัวอย่างหน้าตา: แถบทีมผู้ดูแล / ผู้ทำ (ป้ายตามบทบาท)
หมอ: นพ.สมชาย พยาบาล: น้องมิ้นท์ ผู้ช่วย: น้องแนน รอยืนยันเซลล์

3.3 แท็บทั้ง 4

แท็บlabel บนจอ
Chart & บันทึก"ชาร์ต & บันทึก"
Orders & Billing"รายการ & บิล"
Patient Info"ข้อมูลคนไข้"
Consent"ยินยอม"
ตัวอย่างหน้าตา: แท็บ 4 แท็บของหน้าเคส EMR
ชาร์ต & บันทึก รายการ & บิล ข้อมูลคนไข้ ยินยอม

4. แท็บ "ชาร์ต & บันทึก"

ชาร์ตใบหน้า — เลเยอร์ของแต่ละคน: หมอแต่ละคนวาดบนเลเยอร์ของตัวเอง คนอื่นเปิดดูได้แต่แก้ทับไม่ได้ (ระบบจะแจ้งว่าแก้ได้เฉพาะเลเยอร์ของตัวเอง) — จึงต้องล็อกอินด้วยบัญชีของตัวเองเสมอ ถ้าใช้บัญชีกลางร่วมกัน ทั้งภาพวาดและค่ามือจะลงผิดคน

4.1 สัญญาณชีพ

การ์ดแรกของแท็บ แสดง 6 ช่อง: น้ำหนัก(kg), ส่วนสูง(cm), BMI (คำนวณอัตโนมัติ), ชีพจร(/min), ความดัน (mmHg แยก sys/dia), อุณหภูมิ(°C) — เคสที่ยังไม่ปิดมีปุ่ม "อัปเดต" (กด "บันทึก"/"ยกเลิก")

ตัวอย่างหน้าตา: การ์ดสัญญาณชีพ (6 ช่อง + BMI อัตโนมัติ)
สัญญาณชีพ
น้ำหนัก
58 kg
ส่วนสูง
162 cm
BMI
22.1
ชีพจร
72 /min
ความดัน
120/80 mmHg
อุณหภูมิ
36.7 °C

4.2 การ์ด Chart · แผนการรักษา & เปรียบเทียบผล

  • Treatment Comparison — แผง BEFORE/AFTER คู่กัน ดึงรูปล่าสุดของแต่ละประเภทมาโชว์อัตโนมัติ พร้อม filmstrip รูปย่อ ถ้ายังไม่มีรูปก่อนทำมีปุ่ม "ยังไม่มีรูปก่อนทำ · ถ่าย/เลือกรูป"
  • ชั้นชาร์ต (ตามหมอ) — เคสที่มีหลายหมอวาดชาร์ตคนละชั้น เลือกดูทีละชั้นได้ (ป้าย "ชาร์ตหลัก" = ชั้นฐาน) ปุ่ม "เพิ่ม chart" เพิ่มชั้นใหม่ ไอคอนดินสอเปลี่ยนหมอเจ้าของชาร์ต ไอคอน X ลบทั้งชั้น
  • ปุ่ม "ใช้รูป" / "เปลี่ยนรูป" / "เอารูปออก" — ใช้รูปคนไข้จริงเป็นพื้นหลังแทนเฟซชาร์ตเทมเพลต
  • ปุ่ม "วาดเต็มจอ (iPad)" — เปิดหน้าวาดแบบเต็มจอ เหมาะกับปากกา iPad
  • ClinicalStepper (ขั้นตอนหัตถการ · Clinical Rail) — 4 ขั้นต่อ session: ตรวจ/ปรึกษา (แพทย์) → เตรียมหัตถการ (BT) → ทำหัตถการ (BT + แพทย์) → จบหัตถการ (BT กด → ห้องว่าง) ปุ่ม "เริ่ม session" / "ทำขั้นนี้" / "จบหัตถการ"
  • หลังการรักษา · After-care — ไม่กระทบการปิดเคส มีปุ่ม "นัดครั้งถัดไป" และ "ติดตามผล"

คอลัมน์ขวา (Doctor's Note + ยา + ICD-10):

  • Doctor's Note — การ์ดโน้ตที่บันทึกแล้ว (แก้ไขผ่านไอคอนดินสอ) และช่องเขียนโน้ตใหม่ด้านล่างเสมอ มีสวิตช์ พิมพ์/เขียนมือ (ซ้อนกันได้), ปุ่ม "ขยาย" เปิดหน้าต่างลอย, ปุ่ม "New Note", dropdown "แพทย์ผู้บันทึก", ปุ่ม "บันทึกโน้ต"
  • ยา/เวชภัณฑ์ที่ใช้ — รายการยา/เวชภัณฑ์ที่ตัดเข้าเคสนี้ ปุ่ม "+ เพิ่ม" เปิด modal "เพิ่มสินค้าเข้าเคส"
  • รหัสวินิจฉัย ICD-10 — โหมดแก้ไข: กรอกรหัส (เช่น L70.0) + คำอธิบายต่อแถว ปุ่ม "เพิ่มรหัส"/"บันทึก" — โหมดอ่านอย่างเดียว: แสดงเป็นชิป หรือ "ไม่มีรหัส ICD-10"
  • Treatment Plan (Marking Area) — ตำนานสี (legend) ของจุดที่มาร์กไว้บนชาร์ต แบบอ่านอย่างเดียว

แถบล่างการ์ด — ข้อมูลแพทย์ & ลายเซ็น: 4 แถว แพทย์ / License No. / Specialty / Position (อ่านจากข้อมูล HR จริง ไม่มีข้อมูลเป็น "—" — ระบบกันไม่ให้ดึงพนักงานที่ไม่ใช่หมอมาแสดงเป็น "แพทย์") ฝั่งขวาเป็นช่องเซ็นชื่อ (ลายเซ็นแพทย์ หรือ "เซ็นใหม่ (แทนที่ลายเซ็นเดิม)") + ปุ่ม "บันทึกลายเซ็น"

4.3 เพิ่มยา/เวชภัณฑ์ที่ใช้ (multi-lot)

modal "เพิ่มสินค้าเข้าเคส" — ช่องค้นหา "ค้นหาชื่อ หรือ รหัสสินค้า…" + หมวดหมู่ทางซ้าย เลือกสินค้าที่แบ่งเป็นล็อต จะมีช่อง "เลือก Lot" (หรือ "เลือก Vial") ค่าเริ่มต้นเป็นล็อตใกล้หมดอายุที่สุด (FEFO) — ล็อตที่เลือกของไม่พอ ระบบดึงส่วนที่เหลือจากล็อตถัดไปให้อัตโนมัติ — สต็อกไม่พอเลย มี dialog "สต็อกไม่พอ — ขายก่อนรับเข้า" ให้ยืนยันก่อนตัดสต็อกติดลบชั่วคราว

แต่ละแถวบริการในแท็บ "รายการ & บิล" มีช่องย่อย "ยา/เวชภัณฑ์ที่ใช้กับบริการนี้" — สำหรับยา/เวชภัณฑ์แบบเลือกได้ (optional) ไม่ดึงเข้าอัตโนมัติ ต้องกดเลือกเองว่าใช้ตัวไหนจริง

ตัวอย่างหน้าตา: modal "เพิ่มสินค้าเข้าเคส" + แถวสินค้า +/− + เลือก Lot (Auto FEFO)
เพิ่มสินค้าเข้าเคส
ค้นหาชื่อ หรือ รหัสสินค้า…

Botox 100u

คงเหลือ 340

100
เลือก Lot Auto FEFO

ล็อตค่าเริ่มต้น = ใกล้หมดอายุสุด (FEFO) · ล็อตไม่พอ ดึงจากล็อตถัดไปเอง · สต็อกไม่พอเลย = dialog "ขายก่อนรับเข้า"

4.4 ภาพเปรียบเทียบ Before / After

ส่วนแยกสำหรับอัปโหลด/จัดการรูป กรอบ "ก่อนทำ" (จุดส้ม) กับ "หลังทำ" (จุดเขียว) พร้อมวันที่ถ่าย ปุ่ม "ดูรูปเต็ม / เทียบ" เปิดตัวดูภาพ side-by-side พร้อมแถบเลื่อนเทียบ (drag slider) และปุ่ม "เปิดเครื่องมือ Before / After"

ตัวอย่างหน้าตา: กรอบ Before/After + ปุ่มดูรูปเต็ม-เทียบ

ก่อนทำ

หลังทำ

ดูรูปเต็ม / เทียบ

ก่อนทำ (จุดส้ม) / หลังทำ (จุดเขียว) + วันที่ถ่าย · "ดูรูปเต็ม/เทียบ" เปิด side-by-side + drag slider · แยก session ได้

5. แท็บ "รายการ & บิล"

5.0 รายละเอียดการชำระเงิน — เงินมาจากไหนบ้าง

ใต้รายการ มีกล่อง "รายละเอียดการชำระเงิน" แยกให้เห็นว่ายอดที่จ่ายมาแล้วมาจากทางไหน — สำคัญตอนกระทบยอดปลายวัน เพราะเงินคนละทางลงคนละที่

บรรทัดที่เห็นหมายถึงข้อควรรู้
ยอดชำระสุทธิเงินที่รับมาแล้วทั้งหมดของเคสนี้รวมทุกช่องทางรวมกัน
มัดจำเงินรับล่วงหน้าที่เก็บไว้ก่อนหน้ายังไม่ถือเป็นรายได้จนกว่าจะมารับบริการ
มัดจำจองออนไลน์ลูกค้าจ่ายมัดจำตอนจองผ่านออนไลน์/ตู้เข้ามาก่อนคนไข้จะมาถึงคลินิก
ชำระที่ตู้จ่ายที่ตู้บริการตนเอง ไม่ได้ผ่านเคาน์เตอร์เงินเข้าระบบแล้ว ไม่ต้องเก็บซ้ำ — ถ้าเห็นบรรทัดนี้ อย่าเรียกเก็บอีก

5.1 เพิ่มการชำระเงินจากหน้าเคส

ปุ่ม "เพิ่มการชำระเงิน" ใช้บันทึกเงินที่รับมาจริงแล้ว โดยไม่ต้องกลับไปที่ POS — เช่น ลูกค้าโอนเพิ่มทีหลัง หรือจ่ายส่วนที่ค้างตอนกลับมาอีกวัน

  • เลือก ช่องทาง / ที่มาของเงิน + ใส่ จำนวนที่ได้รับจริง (ไม่ใช่ยอดที่ควรได้)
  • กด "เพิ่มช่องทางชำระ (แบ่งจ่าย)" ถ้ารับมาหลายทางในครั้งเดียว — ระบบรวมยอดให้ที่บรรทัด "รวมที่จะบันทึก"
  • แนบสลิป (ไม่บังคับ) — แต่ถ้าเป็นเงินโอน ควรแนบทุกครั้ง ไม่งั้นตรวจย้อนหลังไม่ได้ว่าเงินก้อนไหน
ปุ่มนี้บันทึกเงินที่รับมาแล้ว ไม่ใช่การเรียกเก็บเงินใหม่ — ถ้ายังไม่ได้รับเงินจริง อย่ากด เพราะยอดจะไปโผล่ในรายงานว่าเก็บแล้วทั้งที่ยังไม่ได้เก็บ

5.2 ของไม่พอในสต็อกแต่ต้องจ่ายออก

ถ้าจ่ายของที่ยอดสต็อกไม่พอ ระบบจะขึ้น "สต๊อกไม่พอ — ขายก่อนรับเข้า" พร้อมปุ่ม "ยืนยันจ่ายออก และตั้งรายการค้างรับ"

  • ระบบไม่บล็อก — เพราะหน้างานของจริงอาจมาถึงก่อนเอกสาร
  • แต่จะตั้งรายการค้างรับไว้ เพื่อให้ฝ่ายคลังตามรับเข้าให้ตรงทีหลัง สต็อกจะได้กลับมาตรง
  • ยืนยันแล้วระบบบันทึกว่าจ่ายออกไปแล้ว — ไม่ใช่การข้ามการตัดสต็อก
  • แถบยอดรวมเคสนี้ (พื้นม่วง) — แยกบริการ/สินค้า/แพ็คเกจ พร้อมปุ่ม "ปิดเคส" หรือ "ส่งไปชำระเงิน" (บทบาทคลินิกเห็นยอดเป็น "—" price-gated)
  • โน้ตเคส — บันทึกภายใน ไม่แสดงให้ลูกค้าเห็นและไม่ขึ้นใบเสร็จ เลือกหมวดหมู่เป็นชิป (เช่น 🎬 รีวิว/KOL) พิมพ์ข้อความ กด "บันทึก" — หมวดที่ติดธง "เกี่ยวกับคลัง" มีป้าย "เคลม" สีแดงและถูกส่งต่อไปหน้าคลัง › เคลมสินค้าอัตโนมัติ
  • บริการ — รายการบริการของเคส แต่ละแถวมีแถบ "ผู้ทำ" เลือกหมอ/พยาบาล/ผู้ช่วยที่ทำบริการนั้น (ยังไม่เลือกแถบเปลี่ยนเหลืองอำพัน "ยังไม่ระบุผู้ทำ") เคสปิดแล้วแสดงชื่อแบบอ่านอย่างเดียว (แก้ไขได้เฉพาะแอดมิน) ปุ่ม + มุมบนขวาเพิ่มบริการใหม่
  • แพ็คเกจ — รายการแพ็คเกจที่ขายในเคสนี้ ไอคอน "แทนที่แพ็คเกจ" (สลับแพ็คเกจที่คีย์ผิดโดยรักษามูลค่าเดิม) และไอคอนถังขยะลบรายการ
  • แถบอัปโหลดสลิป (ถ้ามี) — ช่องหมายเหตุ + ปุ่ม "อัปโหลดสลิป"
ตัวอย่างหน้าตา: แถบยอดรวมเคส (price-gated) + ปุ่มปิดเคส/ส่งชำระ + แถบผู้ทำ "ยังไม่ระบุ"
ยอดรวมเคสนี้
฿6,499
ปิดเคส ส่งไปชำระเงิน
ยังไม่ระบุผู้ทำ — เลือกหมอ/พยาบาล/ผู้ช่วยของบริการนี้ก่อนปิดเคส

6. แท็บ "ข้อมูลคนไข้"

ปุ่ม "ดูประวัติการรักษา" มุมขวาบน — เปิด modal ดูทุก visit ในอดีตของคนไข้คนนี้โดยไม่ต้องออกจากเคส

ประวัติสุขภาพ + แพ้ยา — กล่องนี้เป็นข้อมูลของตัวคนไข้ ไม่ใช่ของเคสนี้ แก้ที่นี่แล้วมีผลกับทุกเคสในอนาคต ไม่ใช่แค่ครั้งนี้

แพ้ยาไม่ใช่ช่องกรอกธรรมดา — ที่ใส่ตรงนี้จะไปโผล่บนส่วนหัวเคสทุกครั้งที่คนไข้คนนี้เปิดเคสใหม่ เพื่อให้คนที่ทำหัตถการเห็นก่อนลงมือ · ถ้าคนไข้แจ้งว่าแพ้อะไร ให้ใส่ทันที อย่ารอจดใส่โน้ตเคสอย่างเดียวเพราะโน้ตเคสไม่เด้งขึ้นเคสหน้า

แพ็คเกจ & สิทธิ์คงเหลือ — หัวข้อย่อย "สิทธิ์คงเหลือของลูกค้า" แสดงทุกแพ็คเกจ/entitlement พร้อมวันหมดอายุ แต่ละรายการมีปุ่ม "ใช้สิทธิ์" (แลกใช้แบบ ฿0 — หน่วยวัด ml/cc/units ใช้สิทธิ์เป็นเศษได้แล้ว เช่น 2.5cc (เพิ่งเปิด) ส่วนหน่วย "ครั้ง/session" ยังใช้เป็นจำนวนเต็ม) และปุ่ม "โอนสิท" (โอนสิทธิ์คงเหลือไป HN อื่น) — ไม่มีสิทธิ์เหลือเลยแสดง "ลูกค้ายังไม่มีสิทธิ์คงเหลือ"

ตัวอย่างหน้าตา: สิทธิ์คงเหลือของลูกค้า + ปุ่ม "ใช้สิทธิ์" / "โอนสิท"

Filler Program

เหลือ 3 ครั้ง · หมดอายุ 12/2569

ใช้สิทธิ์ โอนสิท

"ใช้สิทธิ์" = แลกแบบ ฿0 (หน่วย ml/cc ใช้เศษได้ · ครั้ง/session เต็มจำนวน) · "โอนสิท" = โอนสิทธิ์คงเหลือไป HN อื่น

หมายเหตุ: แถบ "ทีมผู้ดูแล" ที่เคยอยู่ในแท็บนี้ถูกย้ายขึ้นไปอยู่ใต้ส่วนหัวติดจอแล้ว (ดูข้อ 3.2)

8. เพิ่มรายการย้อนหลัง (เคสที่ปิดแล้ว)

กดปุ่ม "เพิ่มย้อนหลัง" (เฉพาะเคสที่ปิดแล้ว) เปิด modal เลือกประเภทบริการหรือสินค้าทีละ 1 รายการ (ตั้งใจให้ทำทีละรายการเพื่อบังคับยืนยันความถูกต้อง) มีสวิตช์ เรียกเก็บเงินลูกค้า (เปิด = ต่อยอดเข้าใบเสร็จเดิมและคำนวณกำไรใหม่ / ปิด = บันทึกในเคสอย่างเดียว ไม่คิดเงินเพิ่ม เช่นของแถม) และช่อง "เหตุผล" บังคับกรอก

9. บทบาทหมอ vs พยาบาล/ผู้ช่วย/BT — ต่างกันตรงไหน

  • เข้าเมนูได้เหมือนกัน — ทั้งหมอและกลุ่มพยาบาล/ผู้ช่วย/BT เห็นเมนู "ประวัติการรักษา (EMR)" เหมือนกัน (persona ฝั่งเมนูจับกลุ่มเป็น "doctor" กับ "bt" — role nurse/assistant/bt เข้ากลุ่ม "bt")
  • ขอบเขต worklist เริ่มต้นต่างกัน (จอแคบ): persona "คลินิก" เปิดมาเห็นแท็บ "เคสของฉัน" เป็นค่าเริ่มต้น ส่วนบทบาทอื่นเริ่มที่ "ทั้งหมด"
  • ClinicalStepper แบ่งงานตามบทบาทชัดเจน: "ตรวจ/ปรึกษา" = แพทย์, "เตรียมหัตถการ"/"จบหัตถการ" = BT, "ทำหัตถการ" = BT + แพทย์ร่วมกัน
  • ผู้ทำต่อบริการ/ต่อแถวยา เลือกได้ทั้งหมอ/พยาบาล/ผู้ช่วยผ่าน dropdown เดียวกัน ไม่ได้ล็อกว่าใครกดปุ่มได้เฉพาะบทบาทตัวเอง — หมอมอบหมายให้พยาบาล/ผู้ช่วยเป็นผู้ทำแทนได้
  • ลายเซ็นแพทย์และ Doctor's Note เปิดให้กรอกได้ตราบใดที่เคสยังแก้ไขได้ ไม่ได้ผูกกับ role ที่ล็อกอินโดยตรงในหน้าจอ — สิทธิ์จริงตัดที่ฝั่งเซิร์ฟเวอร์
อ้างอิงทุกเมนู

👥 ลูกค้า (CRM) / แคตตาล็อก / สะสมแต้ม / วงเงินใกล้หมดอายุ

โปรไฟล์ลูกค้า บริการ หมวดหมู่ แพ็กเกจ โปรโมชัน ระบบแต้ม และรายงานวงเงินใกล้หมดอายุ

1. ลูกค้า (CRM)

เข้าจากเมนู: กลุ่ม งานประจำวัน → ลูกค้า

ลูกค้าที่ยังไม่มี HN: คนที่ทักมาทางแชทหรือจองล่วงหน้า ระบบบันทึกเป็นระเบียนชั่วคราวไว้ก่อน (ยังไม่มีเลข HN) และไม่ปนอยู่ในรายชื่อลูกค้าจริง พอเขามาถึงคลินิก กด "สร้างลูกค้า" → ระบบตรวจเบอร์ซ้ำให้ → กด "ยืนยันนำประวัติเข้า" ระบบออกเลข HN แล้วย้ายประวัติกับนัดที่มีอยู่มาเป็นของคนเดียวกัน (ถ้าเบอร์ตรงกับคนเดิม ระบบคืนคนเดิมให้ ไม่สร้างซ้อน) ทำได้ทั้งจากเมนูลูกค้าและตอนเปิดเคสที่ POS

หัวหน้าหน้าจอ "ลูกค้า (CRM)" — "จัดการโปรไฟล์และข้อมูลทั่วไปของลูกค้า"

1.1 ปุ่มมุมขวาบน

ปุ่มหน้าที่สิทธิ์
รีเฟรชโหลดรายชื่อลูกค้าใหม่ทุกคน
ส่งออกเปิดหน้าต่างส่งออก CSV/Excel ตามตัวกรองปัจจุบันcrm.customer.export
ส่ง SMS (N)เปิดตัวช่วยส่ง SMS หากลุ่มลูกค้าที่ตรงตัวกรองปัจจุบัน (N=จำนวนที่จะได้รับ) — ปิดใช้งานถ้า N=0crm.sms.broadcast
ประวัติแคมเปญไปหน้ารายการแคมเปญ SMS ที่เคยส่งไปแล้วเหมือน ส่ง SMS

1.2 การ์ดสรุป (4 การ์ด)

การ์ดแสดงอะไร
ลูกค้าทั้งหมดจำนวนลูกค้าทั้งหมดในระบบ
ลูกค้าใหม่เดือนนี้จำนวนลูกค้าที่ลงทะเบียนเดือนนี้ (สีเขียว)
สมาชิก VIP (Gold + Platinum)ยอดรวม VIP พร้อมแยกย่อย Platinum/Gold/Silver/Bronze
มาใช้บริการล่าสุด (30 วัน)จำนวนลูกค้าที่มาใช้บริการใน 30 วันล่าสุด
ตัวอย่างหน้าตา: ป้ายระดับลูกค้า (Tier)
Bronze Silver Gold Platinum

1.3 ค้นหา + เพิ่มลูกค้า + ตัวกรอง

  • ช่องค้นหา "ค้นหาชื่อ / เบอร์โทร / เลข OPD…" (อัตโนมัติ ~0.3 วิ หรือกดปุ่ม/Enter)
  • ปุ่ม + สีฟ้า: "เพิ่มลูกค้าใหม่" → เปิดฟอร์มลงทะเบียน
  • ชิปตัวกรองด่วน: ทั้งหมด / VIP / Platinum / Gold / Silver / Bronze / มาใช้บริการล่าสุด (30 วัน)
  • ปุ่ม "ตัวกรอง" (แผงเลื่อนออกด้านข้าง): เกิดเดือน หรือเกิดเดือนนี้ · มีมัดจำค้าง · ช่วงยอดใช้จ่าย หรือตัดยอดใช้จ่าย=0 · ตัดเบอร์ต่างประเทศ · ตัดโน้ตตามหมวด · ตัดแท็ก · ต้องมีเบอร์โทร · ต้องมีอีเมล · ช่วงอายุ · ขาดติดต่อมากกว่า N วัน · มาครั้งสุดท้ายก่อนวันที่ · เคยทำบริการ/หมวดบริการ · ช่วงวงเงินคงเหลือหรือยอดแพ็กเกจ · คอร์สหมดอายุใน N วัน/ก่อนวันที่ · วงเงิน VIP หมดอายุใน N วัน/ก่อนวันที่ · หมวดโน้ต/ข้อความในโน้ต — ตัวกรองที่เลือกขึ้นเป็นชิปใต้แถบค้นหา (✕ ลบทีละอัน หรือ "ล้างตัวกรอง")
  • เรียงตาม: เลข OPD (ค่าเริ่มต้น) / ล่าสุด / ยอดใช้จ่าย / จำนวนนัด / แต้ม / Lifetime แต้ม / มาล่าสุด / ชื่อ — สลับ มาก→น้อย / น้อย→มาก

1.4 รายการลูกค้า

ตาราง 9 คอลัมน์ (จอใหญ่): รหัส/OPD · ชื่อ (ป้าย "ใหม่" ถ้า <30 วัน, ป้าย "ข้อมูลเก่า" ถ้านำเข้าจากระบบเดิม, จุดแดงถ้ามาใช้บริการใน 30 วัน) · เบอร์ · แต้ม · Lifetime · ยอดใช้จ่าย · จำนวนนัด · มาล่าสุด · ระดับ (ป้ายสีตาม Bronze/Silver/Gold/Platinum)

แถบควบคุมการแสดงผล (sticky): จำนวนรายการที่พบ + เลือกจำนวนต่อหน้า (20/50/100/200) + สลับ แบ่งหน้า/เลื่อนต่อเนื่อง — คลิกแถวลูกค้าเปิดหน้าต่างรายละเอียด

ตัวอย่างหน้าตา: ช่องค้นหา + ปุ่มเพิ่มลูกค้า + ชิปกรอง + แถวรายการลูกค้า
ค้นหาชื่อ / เบอร์โทร / เลข OPD… เพิ่มลูกค้าใหม่
ทั้งหมด VIP Gold มาใช้บริการล่าสุด (30 วัน)
OPDชื่อยอดใช้จ่ายระดับ
68-0042 สมหญิง ใจดีใหม่ ฿48,900 Gold
67-1180 อรุณ พงษ์ทอง ฿182,400 Platinum

ป้ายระดับ Bronze/Silver/Gold/Platinum สีตามจริง · ป้าย "ใหม่" (<30 วัน) · คลิกแถวเปิดหน้าต่างรายละเอียด

1.5 ฟอร์มเพิ่ม/แก้ไขลูกค้า

แบ่ง 6 แท็บย่อย:

  1. ข้อมูลทั่วไป — ชื่อ, นามสกุล, ชื่อเล่น(บังคับ), รู้จักเราจากช่องทางไหน, เบอร์โทรศัพท์(บังคับ), อีเมล, เลขที่ OPD (สร้างใหม่: Auto/Manual), ระดับลูกค้า (Tier) — ตอนสร้างใหม่มีปุ่ม "อ่านบัตรประชาชน" ผ่านเครื่องอ่านที่เครื่อง (ไม่ทับข้อมูลที่พิมพ์ไว้แล้ว)
  2. ข้อมูลส่วนตัว — เลขบัตรประชาชน/พาสปอร์ต, วันเกิด, เพศ
  3. ที่อยู่ — ที่อยู่, เมือง/เขต, จังหวัด, รหัสไปรษณีย์
  4. ข้อมูลทางการแพทย์ — กรุ๊ปเลือด, ประวัติการแพ้, ยาที่ใช้ปัจจุบัน, ประวัติการตรวจรักษาอื่นๆ
  5. ติดต่อฉุกเฉิน — ชื่อ-นามสกุล, ความสัมพันธ์, เบอร์ติดต่อ, อีเมล
  6. การติดต่อ — ภาษาที่ถนัด, ช่องทางที่อนุญาต (SMS/Email/Phone/LINE), LINE ID, Facebook, Instagram

1.6 หน้าต่างรายละเอียดลูกค้า

3 แท็บ: ภาพรวม (ข้อมูลส่วนตัว/ที่อยู่/การแพทย์ · สรุปการใช้บริการ · การ์ด "รวมวงเงิน" · Facebook/LINE ที่เชื่อม · การ์ดแต้มสะสม/สมาชิก) · วงเงิน (รายการวงเงิน/บัตรทั้งหมด ปุ่มปรับวงเงิน สิทธิ์ wallet.adjust.manage และโอนวงเงิน) · ประวัติ (ตารางประวัติเครดิต: วันที่/รายการ/จำนวน/คงเหลือ)

ปุ่มท้ายหน้าต่าง: ประวัติการรักษา · ประวัติการซื้อ · สิทธิ์แพ็คเกจ · ประวัติเครดิต · ลบลูกค้า (สิทธิ์ crm.customer.delete) · แก้ไข · สร้างเคส (ไป EMR)

ตัวอย่างหน้าตา: ป้ายระดับ + ป้ายกำกับลูกค้า (KOL/แท็ก) + การ์ดรวมวงเงิน
Platinum KOL รีวิวลง IG
รวมวงเงินคงเหลือ
฿8,500

1.7 ลบลูกค้า

กด "ลบลูกค้า" → หน้าต่างยืนยัน: การลบ = ซ่อนลูกค้าออกจากระบบ (ไม่ปรากฏในรายชื่อ/ค้นหา/ส่งออก/SMS แต่ข้อมูลยังอยู่ กู้คืนได้) เป็นค่าเริ่มต้น — เฉพาะแอดมินเห็นตัวเลือก "ลบถาวร" (ใช้ได้เฉพาะลูกค้าที่ไม่มีประวัติบิล/การรักษา/มัดจำเลย)

1.8 บทบาทที่ใช้

เมนู "ลูกค้า" เห็นทุกบทบาทมาตรฐาน (แอดมิน/staff/sale/manager ฯลฯ) และหมอ — ยกเว้น BT ไม่เห็นเมนูนี้ ปุ่มส่งออก/ส่ง SMS/ลบลูกค้าผูกสิทธิ์ RBAC เฉพาะ

2. จัดการบริการ

เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → จัดการบริการ

หัวหน้าหน้าจอ "จัดการบริการ" พร้อมปุ่ม "เพิ่มบริการ" มุมขวาบน (สิทธิ์ catalog.service.create)

การ์ดสรุป: บริการทั้งหมด · เปิดให้บริการ (เขียว) · ปิดชั่วคราว (เทา) · ราคาเฉลี่ย

ค้นหา + ชิปหมวดหมู่: ช่องค้นหาบริการ + ชิปหมวดหมู่ (จากหน้า "จัดการหมวดหมู่") แต่ละชิปมีตัวเลขจำนวนบริการในหมวดกำกับ

ตัวอย่างหน้าตา: การ์ดสรุป + สวิตช์เปิด/ปิดบริการ + แถวบริการ
บริการทั้งหมด
128
เปิดให้บริการ
120
บริการราคาสถานะ
โบท็อกซ์หน้าผาก฿3,999
เลเซอร์หน้าใส ปิดชั่วคราว฿2,500

ตารางบริการ: บริการ(ชื่อ+ป้าย"ปิดชั่วคราว") · หมวด · คำอธิบาย · ผลิตภัณฑ์ที่ใช้ (รายการยา/เวชภัณฑ์ที่ผูกไว้+จำนวน) · ราคา(฿) · สถานะ (สวิตช์ สิทธิ์ catalog.service.edit) · การจัดการ (แก้ไข/ลบ สิทธิ์ catalog.service.edit/catalog.service.delete) — ทุกคอลัมน์เรียงลำดับได้

ฟอร์มเพิ่ม/แก้ไขบริการ: ชื่อบริการ(บังคับ) · หมวดหมู่(บังคับ) · ราคา(฿) · คำอธิบาย

ยา/เวชภัณฑ์ที่ใช้ในบริการ (ตัด/เบิกสต็อกอัตโนมัติ) — "เพิ่มสินค้า" เพิ่มทีละแถว: สินค้าจากคลัง, Brand/ชื่อ, จำนวน, หน่วย พร้อม 2 ตัวเลือกเสริม: "ไม่บังคับ — เพิ่มตอนใช้จริง" (ไม่ดึงเข้าเคสอัตโนมัติ ต้องเพิ่มเองตอนเปิด OPD) และ "เพดาน (max)" (ปริมาณสูงสุดต่อเคส เว้นว่าง=ไม่จำกัด)

ปิดท้ายด้วยกล่องกาเครื่องหมาย "เปิดให้บริการ"

บทบาทที่ใช้: เมนูแสดงให้ทุกบทบาทเห็น การสร้าง/แก้ไข/ลบใช้สิทธิ์ RBAC แยกกัน ผู้ใช้ที่ไม่มีสิทธิ์จัดการเห็นตารางแบบอ่านอย่างเดียว

3. จัดการหมวดหมู่

เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → จัดการหมวดหมู่

หน้านี้มี 2 ส่วนในหน้าเดียวกัน: หมวดหมู่บริการ (บน) และหมวดหมู่โน้ตเคส (ล่าง)

3.1 จัดการหมวดหมู่บริการ

หัวหน้าหน้าจอ "จัดการหมวดหมู่บริการ" + ปุ่ม "เพิ่มหมวดหมู่" (สิทธิ์ catalog.category.manage) — "ใช้กับตัวกรองและตัวเลือกหมวดในหน้า 'จัดการบริการ'"

การ์ดสรุป: หมวดหมู่ทั้งหมด · เปิดใช้งาน · บริการรวม

ตาราง: ลำดับ(ปุ่มลูกศรจัดลำดับ) · หมวดหมู่(ชื่อไทย+จุดสี) · ชื่อ(EN) · จำนวนบริการ · สถานะ · การจัดการ

ฟอร์มเพิ่ม/แก้ไข: ชื่อหมวดหมู่(ไทย, บังคับ), ชื่อหมวดหมู่(อังกฤษ), ลำดับการแสดง, สีประจำหมวด(10 สีสำเร็จรูป), เปิดใช้งานหมวดนี้

ตัวอย่างหน้าตา: ชิปหมวดหมู่ (จุดสีประจำหมวด)
ผิวหน้า ฉีดฟิลเลอร์ เลเซอร์

ลบหมวดหมู่: ระบบแจ้งจำนวนบริการในหมวดนั้นและให้เลือก "ย้ายบริการไปหมวด" ก่อนลบ (ไม่เลือก = ย้ายไป "อื่นๆ") — บริการไม่ถูกลบไปด้วย

3.2 จัดการหมวดหมู่โน้ตเคส

หัวข้อ "จัดการหมวดหมู่โน้ตเคส" — "ใช้กับ 'โน้ตเคส' ในหน้ารายละเอียดเคส, ตัวกรอง EMR และตัวกรองลูกค้า"

การ์ดสรุป: หมวดหมู่ทั้งหมด · เปิดใช้งาน · โน้ตที่ใช้หมวดนี้รวม

ตาราง: ลำดับ · หมวดหมู่(ชื่อไทย+ป้าย "เคลม" สีแดงถ้าผูกกับคลัง) · ชื่อ(EN) · จำนวนที่ใช้ · สถานะ · การจัดการ

ฟอร์มเพิ่ม/แก้ไข: ชื่อหมวดหมู่(ไทย, บังคับ), ชื่อหมวดหมู่(อังกฤษ), ลำดับการแสดง, checkbox "โน้ตเกี่ยวกับคลัง (แจ้งเคลมสินค้า/อุปกรณ์)" — ติ๊กแล้วโน้ตที่บันทึกในหมวดนี้ถูกส่งไปคลัง › เคลมสินค้า › "Issue จากเคส" อัตโนมัติ, เปิดใช้งานหมวดนี้

ลบหมวดหมู่โน้ตเคส: มีโน้ตใช้หมวดนี้อยู่ → ระบบบล็อกการลบและเสนอปุ่ม "ปิดใช้งานแทน" — ยังไม่มีโน้ตใช้งานเลยลบได้ทันที

3.3 บทบาทที่ใช้

การเพิ่ม/แก้ไข/ลบทั้งสองส่วนต้องมีสิทธิ์ catalog.category.manage ผู้ใช้อื่นเห็นตารางแบบอ่านอย่างเดียว

4. แพ็กเกจ

เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → แพ็กเกจ

หัวหน้าหน้าจอ "แพ็คเกจ / คอร์ส"

4.1 หน้ารายการ

ปุ่มมุมขวาบน: สลับมุมมองการ์ด/ตาราง · checkbox "แสดงที่ปิดอยู่" · ปุ่ม "สร้างแพ็คเกจใหม่"

ช่องค้นหา: "ค้นหาแพ็คเกจ (ชื่อ หรือ ราคา)"

ดูแบบ "ทุกสาขา""กำลังดูแบบ 'ทุกสาขา' — เลือกสาขาก่อนแก้ไข/ลบแพ็กเกจ" — ปุ่มแก้ไข/เปิด-ปิด/ลบ ถูกปิดใช้งานจนกว่าจะเลือกสาขาที่มุมขวาบน

การ์ดสรุป: แพ็คเกจทั้งหมด · เปิดขายอยู่ · ปิดชั่วคราว · ราคาเฉลี่ย

มุมมองการ์ด (ค่าเริ่มต้น): รูปปก, ชื่อ, ป้าย "เครดิต" (ถ้าเป็นประเภทเครดิต), ราคา (ประเภทเซสชัน: ราคาขาย+ราคาเดิมขีดฆ่า+ป้าย% ส่วนลด · ประเภทเครดิต: ยอดที่จ่าย+ยอดเครดิตที่ได้รับ+ป้ายโบนัส), รายการบริการ/สินค้าในแพ็กเกจ (สูงสุด 4 รายการ), รหัสแพ็กเกจ+อายุการใช้งาน, ปุ่มแก้ไข/เปิด-ปิด/ลบ

มุมมองตาราง: แพ็คเกจ · รหัส · อายุการใช้งาน · ราคา(฿) · สถานะ · การจัดการ — ลบต้องยืนยัน ระบบแจ้งว่าลบไม่ได้ถ้ามีลูกค้าซื้อไปแล้ว

ตัวอย่างหน้าตา: การ์ดแพ็กเกจ (ป้ายคอร์ส + ราคาเดิมขีดฆ่า + ป้าย % ส่วนลด)
คอร์ส -25%

Filler Program 3 ครั้ง

฿20,000฿15,000

4.2 ฟอร์มสร้าง/แก้ไขแพ็กเกจ

ประเภทแพ็คเกจ — เซสชัน/คอร์ส (นับจำนวนครั้ง/รายการบริการ) หรือ เครดิต (ลูกค้าจ่ายเงินสด ได้เครดิตไว้ใช้)

ข้อมูลทั่วไป: ชื่อแพ็คเกจ(บังคับ), คำอธิบาย, รูปภาพแพ็คเกจ (อัพโหลด — เก็บเข้าคลังสื่อของคลินิกอัตโนมัติ)

ราคา: ราคาขาย/ราคาที่ลูกค้าจ่ายจริง(บังคับ), ราคาเดิม(คำนวณ% ส่วนลด), ระยะใช้สิทธิ์(วัน — เฉพาะประเภทเซสชัน เว้นว่าง=ไม่หมดอายุ), checkbox "เปิดขายอยู่ (active)"

checkbox "แสดงในโปรโมชั่น LINE" — ติ๊กเพื่อให้แพ็คเกจขึ้นในเมนู "โปรโมชัน" ของ LINE ลูกค้า

รายละเอียดเครดิต (เฉพาะประเภทเครดิต): โบนัสเครดิต(แถม)เป็นบาท(บังคับ), อายุเครดิต(เดือน — เว้นว่างใช้ค่าเริ่มต้นระบบ), ตัวเลือกผูกกับ "ชนิดวงเงิน" เฉพาะ (ถ้าเปิดใช้ระบบวงเงินหลายชนิด)

รายการในแพ็กเกจ (เฉพาะประเภทเซสชัน): เพิ่มรายการบริการ/สินค้า กำหนดจำนวน/ไม่จำกัด หรือทำเป็น "เลือกได้" (ลูกค้าเลือก 1 จากตัวเลือกอย่างน้อย 2 รายการ) พร้อมตัวอย่างการปันส่วนราคาต่อรายการแบบเรียลไทม์ และรูปแบบการใช้สิทธิ์ (ปกติ/บุฟเฟต์/โควต้า — โควต้าระบุจำนวนครั้งต่อรอบ วัน/สัปดาห์/เดือน)

4.3 บทบาทที่ใช้

หน้ารายการเปิดให้ทุกบทบาทดู การแก้ไข/เปิด-ปิด/ลบล็อกเมื่อดูมุมมอง "ทุกสาขา" (ต้องเลือกสาขาก่อน) — ไม่มีสิทธิ์ RBAC เฉพาะสำหรับแพ็กเกจ (อิงบทบาทพื้นฐาน)

5. โปรโมชัน

เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → โปรโมชัน

หัวหน้าหน้าจอ "โปรโมชัน & แคมเปญ" + ปุ่ม "สร้างแคมเปญ"

การ์ดสรุป (KPI): กำลังใช้งาน · ตั้งเวลาไว้ · โปรโมชันทั้งหมด · ยอดแลกใช้รวม

รายการโปรโมชัน (การ์ด): แถบไล่สีแสดงมูลค่าส่วนลด (-฿X หรือ -X%) พร้อมป้ายสถานะ (กำลังใช้งาน/รอเริ่ม/หมดอายุ/ปิดใช้งาน) รหัสโปรโมชัน+ป้ายวิธีใช้(อัตโนมัติ/คูปอง), ชื่อ, คำอธิบาย, กลุ่มเป้าหมาย, ช่วงวันที่มีผล, ยอดแลกใช้แล้ว/จำกัดการใช้, ยอดซื้อขั้นต่ำ(ถ้ามี), ปุ่มแก้ไข/ลบ

ตัวอย่างหน้าตา: การ์ดโปรโมชัน (มูลค่าส่วนลด + ป้ายสถานะ + วิธีใช้)
-10%
ส่วนลดปีใหม่
กำลังใช้งาน คูปอง

รหัส NY2026 · Gold/Platinum · ใช้แล้ว 42/100

แถบไล่สี = มูลค่าส่วนลด · ป้ายสถานะ (กำลังใช้/รอเริ่ม/หมดอายุ/ปิด) · วิธีใช้ อัตโนมัติ/คูปอง

5.3 ฟอร์มสร้าง/แก้ไขโปรโมชัน

ข้อมูลทั่วไป: รหัสโปรโมชั่น(เว้นว่าง=สร้างอัตโนมัติ), ชื่อโปรโมชั่น(บังคับ), คำอธิบาย

วิธีการใช้งาน: ใช้อัตโนมัติ (ระบบใช้ให้อัตโนมัติเมื่อเงื่อนไขตรงกัน) หรือ คูปองโค้ด (ลูกค้าต้องกรอกรหัส)

ตั้งค่าส่วนลด: ประเภทส่วนลด(จำนวนเงิน/เปอร์เซ็นต์), มูลค่าส่วนลด(บังคับ), ส่วนลดสูงสุด(เฉพาะแบบเปอร์เซ็นต์), ยอดซื้อขั้นต่ำ

เงื่อนไขผู้มีสิทธิ์ใช้ — เลือก 1 ใน 3: ลูกค้าใหม่ / ระดับสมาชิก (เลือกได้หลายระดับ) / เฉพาะลูกค้าที่ระบุ (เพิ่มเบอร์โทรทีละเบอร์)

ระยะเวลาที่ใช้ได้: วันที่เริ่มต้น(บังคับ), วันที่สิ้นสุด, จำนวนการใช้ทั้งหมด, ใช้ได้ต่อลูกค้า (เว้นว่าง=ไม่จำกัด)

สถานะ: checkbox "เปิดใช้งาน (โปรโมชั่นจะถูกใช้อัตโนมัติเมื่อเงื่อนไขตรงกัน)" — ลบต้องยืนยันในหน้าต่างแยก

5.4 บทบาทที่ใช้

เมนูเปิดให้ทุกบทบาทมาตรฐานใช้งานได้ ไม่มีสิทธิ์ RBAC แยกเฉพาะ

6. ระบบสะสมแต้ม

เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → ระบบสะสมแต้ม

หัวหน้าหน้าจอ "ระบบสะสมแต้ม (Loyalty)" — โมดูลนี้เปิด/ปิดได้ทั้งระบบ (ปิดอยู่ทุกแท็บจะแจ้งว่าโมดูลยังไม่เปิดใช้งาน)

5 แท็บ: จัดการแต้ม · ของรางวัล · การแลกของรางวัล · ประวัติแต้ม · ตั้งค่าแต้ม (แท็บสุดท้ายเฉพาะแอดมิน)

6.1 จัดการแต้ม

เลือกลูกค้าจากช่องค้นหา → แสดงการ์ด แต้มคงเหลือ และ แต้มสะสมรวม (Lifetime) — เฉพาะแอดมินเห็นกล่อง "ปรับแต้มด้วยตนเอง (Admin)" — กรอกจำนวนแต้ม+เหตุผล(บังคับทั้งคู่) กด เพิ่ม/ลด — บันทึกเป็นรายการใหม่ในประวัติแต้ม

ตัวอย่างหน้าตา: การ์ดแต้มคงเหลือ + ปุ่มแลกของรางวัล
แต้มคงเหลือ
1,240
Lifetime 5,800
แลกเลย

6.2 ของรางวัล

รายการของรางวัลแบบการ์ด (ประเภท, ชื่อ, คำอธิบาย, แต้มที่ใช้แลก, จำนวนที่แลกไปแล้ว, สต็อกคงเหลือ) ปุ่ม "เพิ่มของรางวัล" (เฉพาะแอดมิน): ชื่อ, รายละเอียด, แต้มที่ใช้แลก, ประเภท, สต็อก(เว้นว่าง=ไม่จำกัด), ลำดับการแสดง, เปิดใช้งาน

ตัวอย่างหน้าตา: การ์ดของรางวัล (แต้มที่ใช้แลก + สต็อก)

ครีมกันแดด SPF50

500 แต้มเหลือ 12

การ์ด: ประเภท/ชื่อ/แต้มที่ใช้แลก/สต็อกคงเหลือ · "เพิ่มของรางวัล" เฉพาะแอดมิน (สต็อกเว้นว่าง=ไม่จำกัด)

6.3 การแลกของรางวัล

เลือกลูกค้า → แสดงแต้มคงเหลือ → เลือกของรางวัลที่เปิดใช้งาน กด "แลกเลย" (แต้มไม่พอ/ของหมด=กดไม่ได้ — เฉพาะแอดมิน) แลกสำเร็จแสดงโค้ดสำหรับรับของที่เคาน์เตอร์

ด้านล่างมี "ประวัติการแลกของลูกค้ารายนี้" (รอรับของ/รับแล้ว/ยกเลิก/หมดอายุ) — รายการ "รอรับของ" แอดมินกดปุ่ม "ทำเครื่องหมายว่ารับแล้ว" ได้

6.4 ประวัติแต้ม

เลือกลูกค้า → ตารางประวัติแต้มแบบสะสม (append-only เรียงล่าสุดก่อน): วันที่ · ประเภท · รายละเอียด · แต้ม(+/− พร้อมสี) · คงเหลือ

ตัวอย่างหน้าตา: ตารางประวัติแต้ม (+/− พร้อมสี + คงเหลือ)
วันที่รายละเอียดแต้มคงเหลือ
26 ก.ค.ซื้อคอร์ส+1201,240
20 ก.ค.แลกครีม−5001,120

append-only เรียงล่าสุดก่อน · แต้มบวก (เขียว) / ลบ (แดง) + ยอดคงเหลือสะสมต่อแถว

6.5 ตั้งค่าแต้ม (เฉพาะแอดมิน)

  • สวิตช์หลัก "เปิดใช้งานระบบสะสมแต้ม"
  • สูตรการรับแต้ม: แต้ม = (ยอดใช้จ่าย ÷ ตัวหาร) × อัตราพื้นฐาน × ตัวคูณตามระดับลูกค้า (รับแต้มเมื่อปิดการขายสำเร็จ)
  • ตัวคูณแต้มตามระดับลูกค้า: กำหนดแยกราย Bronze/Silver/Gold/Platinum
  • checkbox "แต้มหมดอายุสิ้นปีถัดไป"
  • ปุ่ม "บันทึกการตั้งค่า"

6.6 บทบาทที่ใช้

ทุกบทบาทเข้าดู 4 แท็บแรกได้ แต่การเขียน/แก้ไขและแท็บ "ตั้งค่าแต้ม" จำกัดเฉพาะแอดมิน/super_admin

7. วงเงินใกล้หมดอายุ

เข้าจากเมนู: กลุ่ม หลังบ้าน → วงเงินใกล้หมดอายุ

หัวหน้าหน้าจอ "วงเงินใกล้หมดอายุ" (breadcrumb: รายงาน › วงเงินใกล้หมดอายุ) พร้อมปุ่มส่งออก Excel มุมขวาบน

การ์ดสรุป (KPI): จำนวนวงเงินใกล้หมดอายุ · หมดอายุแล้ว (ยอดถูกระงับ) · มูลค่าใกล้หมดอายุรวม · มูลค่ารวมก่อน VAT · จำนวนลูกค้า

ตัวกรอง: ช่องค้นหา "ค้นหาชื่อลูกค้า / HN / Lot" + "กรองช่วงวันหมดอายุ": ภายใน 7/15/30(ค่าเริ่มต้น)/60/90 วัน

ตารางรายการ: ลูกค้า(ชื่อ+OPD) · เบอร์โทร · เลขที่วงเงิน(Lot) · จริง(รวม VAT) · แถม(รวม VAT) · รวม(รวม VAT) · รวม(ก่อน VAT) · วันหมดอายุ · สถานะ (ป้าย "หมดอายุแล้ว" สีแดง หรือ "ใกล้หมดอายุ" สีเหลือง) · เหลือ(วัน) — สีป้ายเปลี่ยนตามความเร่งด่วน: ≤7 วัน(แดง), ≤15 วัน(เหลือง), มากกว่านั้น(ม่วง) · ดำเนินการ — ปุ่ม "ขายวงเงิน" พาไปหน้า POS ของลูกค้ารายนั้นพร้อมเปิดโหมดขายวงเงินทันที

บทบาทที่ใช้: จำกัดสิทธิ์ wallet.report.view — ค่าเริ่มต้นเห็นเฉพาะแอดมิน/super_admin แต่เปิดให้บทบาท sale เห็นได้ด้วยเป็นกรณีพิเศษ

อ้างอิงทุกเมนู

📦 คลังสินค้า และ จัดซื้อ

รับของเข้า ควบคุมล็อต/วันหมดอายุ ปรับปรุงสต็อก โอนย้าย เคลม และใบสั่งซื้อ

เมนูฝั่งซ้ายมี 2 กลุ่มที่เกี่ยวกับสต็อก: "คลังสินค้า" (16 หน้าย่อย) และ "จัดซื้อ" (3 หน้าหลัก, โมดูลเสริมที่ต้องเปิดใช้งานแยก — ดูหัวข้อ 17) สัญลักษณ์ป้ายเตือน (badge ตัวเลขแดง/เหลือง) ข้างเมนูย่อยในแถบซ้ายขึ้นเมื่อมีรายการค้างทำ — "Lot & วันหมดอายุ" และ "ยาใกล้หมด / Reorder" ใช้ตัวเลขเดียวกัน

1. แดชบอร์ดคลัง

เข้าจากไหน: เมนู คลังสินค้า → แดชบอร์ดคลัง

  • แบนเนอร์เตือน "รอปรับสต็อก" (เหลือง/แดง) — เฉพาะเมื่อมีสินค้าที่ขายไปก่อนของเข้าจริง (ยอดติดลบ) พร้อมปุ่ม "ดูรายการรอปรับสต็อก" ไปหัวข้อ 14
  • การ์ดสรุป 4 ใบ: รายการทั้งหมด, มูลค่าสต็อก, ใกล้หมด, ใกล้หมดอายุ
  • ปุ่มลัด 3 ปุ่ม: รับสินค้าเข้า (GR), นับสต็อก, ยาใกล้หมด
  • ตาราง "ต้องเติมด่วน (Top 5)" และ "ใกล้หมดอายุ" คู่กัน + ลิงก์ "ดูทั้งหมด"
  • ตาราง "อันดับสินค้าที่คลินิกใช้บ่อย (90 วันล่าสุด)"
  • (สำหรับผู้ที่เห็นต้นทุน) วิดเจ็ตเพิ่มเติม: GR รอบัญชีเติมต้นทุน, Issue จากเคสที่ยังไม่เปิดใบเคลม, มูลค่าสต็อกตามหมวด (ต้นทุนถัวเฉลี่ยเคลื่อนที่), อายุสต็อก(Aging)และความเสี่ยงหมดอายุ, มูลค่าความเสียหายต่อเดือน, การใช้ต่อเดือนแยกตามหมวด(12 เดือน), อัตราเคลมต่อ Lot/เดือน — แต่ละวิดเจ็ตมีปุ่ม Export Excel ของตัวเอง

สิทธิ์: ทุกคนที่เข้าเมนูคลังได้เห็นหน้านี้ แต่คอลัมน์/วิดเจ็ต "มูลค่า/ต้นทุน" ซ่อนสำหรับผู้ที่ไม่มีสิทธิ์ inventory.cost.view

2. สินค้า / ผลิตภัณฑ์

เข้าจากไหน: เมนู คลังสินค้า → สินค้า / ผลิตภัณฑ์ (หน้าเดียวกับที่ขึ้นตอนกดกลุ่มเมนู "คลังสินค้า" เฉยๆ)

การ์ดสรุป (รายการทั้งหมด, มูลค่าสต็อก, ใกล้หมด, ใกล้หมดอายุ) + ตารางสินค้าทั้งหมด: รหัส/ชื่อสินค้า(มีรูป), หมวด, คงเหลือ(พร้อมจุดสั่งกำกับใต้ตัวเลข), หน่วย, ราคา/หน่วย, วันหมดอายุ, สถานะ, การจัดการ

ตัวกรอง/เรียง: ค้นหาชื่อ/รหัส, แท็บหมวดหมู่, เรียงตาม 9 แบบ (ชื่อ, คงเหลือ น้อย→มาก/มาก→น้อย, วันที่เพิ่ม, วันหมดอายุ, ราคา, รหัส SKU), กรองสถานะ(ปกติ/ใกล้หมด/หมด/ใกล้หมดอายุ), กรองชนิด(ควบคุม Lot/แบ่งย่อยได้), checkbox "เฉพาะที่เปิดใช้งาน" — ทุกตัวกรองจำค่าไว้ในเครื่อง

Badge สถานะต่อแถว: หมด(แดงเข้ม) / ใกล้หมด(เหลือง) / ใกล้หมดอายุ(แดงอ่อน) / ปกติ(เขียว)

ตัวอย่างหน้าตา: ป้ายสถานะสต็อกต่อแถว
หมด ใกล้หมด ใกล้หมดอายุ ปกติ
  • เพิ่มสินค้าใหม่: กด "เพิ่มสินค้า" (มุมขวาบน) → กรอกฟอร์มในโมดัล
  • เพิ่มสต็อก (สร้าง lot ใหม่): กดปุ่ม "รับ-จ่ายสต็อก" หรือไอคอนกล่องที่แถวสินค้านั้น
  • ดู lot/สต็อกของสินค้า: ไอคอนตา (Eye)
  • แก้ไขสินค้า: ไอคอนดินสอ — ผู้ใช้สิทธิ์ "sale" เห็น tooltip เป็น "อัปเดตรูปสินค้า" (จำกัดสิทธิ์กว่า admin)
  • จัดการหมวดหมู่: ปุ่ม "จัดการหมวดหมู่" (เฉพาะผู้มีสิทธิ์)
  • นำเข้าจากไฟล์ (bulk): ดาวน์โหลดฟอร์ม Excel → กรอก → อัปโหลด → ตรวจ → ยืนยัน (อัปเดตซ้ำด้วยรหัส SKU ถ้าอัปโหลดไฟล์เดิมซ้ำ ไม่สร้างซ้ำ)

สิทธิ์: เพิ่มสินค้า/สร้าง lot ต้อง inventory.product.create/inventory.lot.create · แก้ไขสินค้า inventory.product.edit · จัดการหมวดหมู่ inventory.product.edit · นำเข้าไฟล์ต้องมีทั้งสิทธิ์สร้างสินค้า และ inventory.import.upload (admin-only โดย fallback) และต้องเปิดใช้งานฟีเจอร์ที่ระบบก่อนปุ่มถึงโผล่

3. รับสินค้าเข้า (GR)

เข้าจากไหน: เมนู คลังสินค้า → รับสินค้าเข้า (GR)

ช่องที่ยังไม่รู้ เว้นไว้ได้: ซัพพลายเออร์และต้นทุนไม่บังคับตอนรับของเข้า — รับของเข้าก่อนแล้วให้บัญชีมาเติมทีหลังได้ สินค้าที่ยังไม่มีต้นทุนจะถูกทำเครื่องหมายไว้ในหน้าสินค้า (แถบสีแดง + ตัวกรอง "ยังไม่มีต้นทุน") จะได้ตามเก็บได้ครบ

ใครรับของเข้าได้: ผู้จัดการ เจ้าหน้าที่คลัง และเภสัชกร รับของเข้าคลังได้เอง ไม่ต้องรอผู้ดูแลระบบ

สวิตช์ "ต้องตรวจทานใบรับเข้าก่อนโพสต์เข้าคลัง" (เฉพาะ admin) — เปิดแล้วใบรับเข้าใหม่ทุกใบค้างสถานะ "รอตรวจสอบ" จนกว่าผู้มีสิทธิ์จะอนุมัติก่อนตัดเข้าสต็อกจริง / ปิด(ค่าเริ่มต้น)=โพสต์เข้าคลังได้ทันที · ตัวกรองสถานะ: ทั้งหมด/ร่าง/รอตรวจสอบ/Post แล้ว/รอบัญชีเติมต้นทุน · ตาราง: เลขที่ GR, วันที่รับ, Supplier, อ้างอิง PO, มูลค่ารวม, สถานะ

ขั้นตอนรับเข้า + lot + วันหมดอายุ:

  1. กด "รับสินค้าเข้า" → กรอกวันที่รับ, ชื่อ Supplier, อ้างอิง PO(ถ้ามี), หมายเหตุ
  2. เพิ่มรายการในตารางกริดแบบ bulk — เลือกสินค้า, ระบุ Lot number(บังคับ), จำนวน, ต้นทุน/หน่วย(เว้นว่างได้="รอบัญชีเติมต้นทุน" ทีหลัง), วันหมดอายุ, ติ๊ก GPO/เย็น(cold chain) ถ้ามี, ตำแหน่งจัดเก็บ
  3. ระบบเตือนถ้าสินค้า+Lot ซ้ำกันในใบเดียว ต้องรวมเป็นแถวเดียว
  4. บันทึกใบรับ → เอกสารเข้าสถานะ "ร่าง"
  5. กด "Post" ที่แถวใบรับ (modal ยืนยัน "สร้าง Lot และบันทึก movement เข้าระบบ — ไม่สามารถย้อนกลับได้") → สต็อกเข้าจริง หรือถ้าเปิดโหมดตรวจทานไว้ ใบจะเป็น "รอตรวจสอบ" ก่อน แล้วผู้มีสิทธิ์กด "อนุมัติ"/"ตีกลับ"

เติมต้นทุนทีหลัง: ใบที่มีบรรทัด costPending ขึ้นสถานะ "รอบัญชีเติมต้นทุน" (badge เหลือง) — กดปุ่ม "เติมต้นทุน" ที่แถว กรอกต้นทุน/หน่วยของแต่ละแถวที่ค้าง → ระบบบันทึก movement ปรับมูลค่าแบบ append-only และคำนวณต้นทุนถัวเฉลี่ยใหม่อัตโนมัติ

ตัวอย่างหน้าตา: ตัวกรองสถานะ GR + การ์ดใบรับ + badge "รอบัญชีเติมต้นทุน" + ปุ่ม Post
ทั้งหมดร่างรอตรวจสอบPost แล้วรอบัญชีเติมต้นทุน

GR-2569-0142

บจก. เมดิคอล · 8 รายการ

รอบัญชีเติมต้นทุน
Postเติมต้นทุน

Lot number บังคับ · ต้นทุนเว้นว่างได้ = badge เหลือง "รอบัญชีเติมต้นทุน" · Post = สร้าง Lot+movement (ย้อนไม่ได้)

นำเข้าจากไฟล์: "นำเข้าจาก Excel" — เหมือนขั้นตอน bulk import ของหน้าสินค้า

สิทธิ์: เห็นคอลัมน์ต้นทุน inventory.cost.view · เติมต้นทุน inventory.cost.fill(admin) · อนุมัติ/ตีกลับใบรอตรวจสอบ inventory.receive.approve(admin) · สวิตช์ตรวจทาน = admin เท่านั้น

4. Lot & วันหมดอายุ

เข้าจากไหน: เมนู คลังสินค้า → Lot & วันหมดอายุ

ตารางทุก Lot ในระบบ — Lot Number(พร้อม badge GPO/เย็นถ้ามี), สินค้า, คงเหลือ(พร้อมจำนวนที่ถูกจองใต้ตัวเลข), วันหมดอายุ(พร้อมนับถอยหลังเป็นวัน), สถานะ, ที่เก็บ

ตัวกรอง: ค้นหา lot/สินค้า · ชิปกรองวันหมดอายุ: ทั้งหมด / ≤30 วัน / ≤90 วัน / หมดอายุแล้ว / กักกัน-เรียกคืน

Badge สถานะ: ปกติ(เขียว) / กักกัน(เหลือง) / เรียกคืน(แดง) / หมดแล้ว(เทา) — สีวันหมดอายุ: แดงเข้ม(หมดแล้ว), แดง(≤30 วัน), เหลือง(≤90 วัน)

ตัวอย่างหน้าตา: ตาราง Lot (badge GPO/เย็น + วันหมดอายุนับถอยหลัง + สถานะ)
ทั้งหมด≤30 วัน≤90 วันหมดอายุแล้ว
Lot / สินค้าหมดอายุสถานะ
A2409 GPO Botoxเหลือ 24 วันปกติ
N2312 Fillerหมดอายุแล้วหมดแล้ว

badge GPO/เย็น · วันหมดอายุนับถอยหลังเปลี่ยนสี (≤30 แดง · ≤90 เหลือง) · แก้สถานะ = กักกัน/เรียกคืน (admin)

ขั้นตอน: กด "แก้ไข" ที่แถว lot → เปลี่ยนสถานะ (ปกติ/กักกัน/เรียกคืน) หรือแก้ที่เก็บ

สิทธิ์: แก้ไข lot ต้อง inventory.lot.create(admin)

5. ยาใกล้หมด / Reorder

เข้าจากไหน: เมนู คลังสินค้า → ยาใกล้หมด / Reorder

การ์ด KPI 2 ใบ (รายการต่ำกว่า/เท่ากับจุดสั่ง, รายการแนะนำสั่ง) · ข้อความ "การสั่งซื้อจะส่งต่อให้ฝ่ายจัดซื้อ (Procurement) — ใช้ Excel export เพื่อส่งใบขอซื้อ" · ตาราง: สินค้า, คงเหลือ, ขั้นต่ำ, จุดสั่ง(Reorder), ควรสั่งเพิ่ม, หน่วย, Supplier ล่าสุด

ขั้นตอน: ตรวจรายการ → กด Export Excel ส่งต่อให้ทีมจัดซื้อ (หน้านี้ไม่มีปุ่มสร้าง PO ในตัว ต้องไปสร้างที่หัวข้อ 17.3)

6. ปรับปรุงสต็อก

เข้าจากไหน: เมนู คลังสินค้า → ปรับปรุงสต็อก

ตัวกรองสถานะ(ทั้งหมด/รออนุมัติ/อนุมัติแล้ว/ดำเนินการแล้ว) · ตาราง: รหัส, สินค้า/Lot(แสดงรายการแรก+"+N รายการ"ถ้ามีหลายบรรทัด), จำนวน(+/−), เหตุผล, สถานะ, วันที่

  1. กด "สร้างการปรับปรุง" → เลือกเหตุผลหลัก (เสียหาย/หาย/นับผิด/หมดอายุ-ทำลาย/ปรับปรุงตัวเลข/อื่นๆ) และหมายเหตุ
  2. เพิ่มแถวในกริด — เลือกสินค้า+Lot แล้วกรอก "ยอดใหม่" (คงเหลือหลังปรับ แบบเลขสัมบูรณ์ ไม่ใช่ผลต่าง) ระบบคำนวณส่วนต่างเทียบคงเหลือปัจจุบันเอง
  3. กด "ส่งขออนุมัติ" → เข้าสถานะ "รออนุมัติ"
  4. ผู้มีสิทธิ์กด "อนุมัติ" → "อนุมัติแล้ว" แล้วกด "ดำเนินการ" อีกครั้งเพื่อให้สต็อกเปลี่ยนจริง (มีการ์ดกันกรณีสต็อกเปลี่ยนไปแล้วระหว่างรออนุมัติ — แจ้ง error แทนปรับผิด)

นำเข้าจากไฟล์: สร้างได้เฉพาะสถานะ "รออนุมัติ" — สต็อกยังไม่ขยับจนกว่าจะอนุมัติ+ดำเนินการ

สิทธิ์: อนุมัติ/ดำเนินการต้อง inventory.adjustment.approve(admin) · นำเข้าไฟล์ต้อง inventory.import.upload

7. นับสต็อก

เข้าจากไหน: เมนู คลังสินค้า → นับสต็อก

ตัวกรองสถานะ(ทั้งหมด/ร่าง/รอตรวจสอบ/อนุมัติแล้ว) · ตาราง: เลขที่, ขอบเขต(นับทั้งหมด/ตามหมวด/ตามที่เก็บ), สถานะ, รายการ, ส่วนต่าง(ไฮไลต์เหลืองถ้า >0), วันที่

  1. กด "สร้างรอบนับสต็อก" → ระบุที่เก็บ/โซน(ถ้ามี) + หมายเหตุ
  2. กรอกรายการที่นับในกริด — เลือกสินค้า (เลือก lot ได้ ไม่บังคับ) แล้วกรอก "ยอดนับจริง" (คอลัมน์ "ยอดระบบ" เป็นค่า snapshot อัตโนมัติ กรอกเองไม่ได้)
  3. กด "สร้างรอบนับ" → เข้าสถานะ "ร่าง"
  4. กด "ส่งตรวจ" ที่แถว → เข้าสถานะ "รอตรวจสอบ" (คำนวณส่วนต่างตอนนี้)
  5. ผู้มีสิทธิ์กด "อนุมัติ" → สต็อกถูกปรับตามส่วนต่างจริง

นำเข้าจากไฟล์: สร้างเป็นใบร่างเท่านั้น ส่วนต่างคำนวณตอนส่งตรวจ ปรับสต็อกจริงหลังอนุมัติ

ปริ้นใบนับ (PDF): ปุ่ม "ใบนับทั้งคลัง (PDF)" ที่หัวหน้าจอ = ใบนับของสินค้าที่เปิดใช้งานทั้งหมด · ปุ่ม "ใบนับเฉพาะที่เลือก (PDF)" ในหน้าต่างสร้างรอบนับ = เฉพาะรายการที่เลือกไว้ในรอบนั้น กดแล้วได้ไฟล์ดาวน์โหลดลงเครื่อง เอาไปปริ้นหรือเปิดบนแท็บเล็ตได้ ใบนับแยกบรรทัดตาม Lot พร้อมวันหมดอายุและ "ยอดระบบ" มีช่องว่างให้เขียน "นับได้" กับ "หมายเหตุ" และช่องเซ็นผู้นับ/ผู้ตรวจสอบ/ผู้อนุมัติท้ายใบ

นับรวมทุก Lot หรือแยกราย Lot: ช่องติ๊ก "แยกราย Lot ทุกตัว" ที่หัวคอลัมน์ Lot แตกบรรทัดให้ทุกสินค้าในตารางพร้อมกัน โดยติ๊ก Lot ที่ยังมีของให้อัตโนมัติ เรียงใกล้หมดอายุก่อน — ติ๊กออก Lot ที่ไม่นับได้เอง หรือกดที่ช่อง Lot ของแถวใดแถวหนึ่งเพื่อเลือกเฉพาะสินค้านั้น แต่ละบรรทัดบอกชัดว่าเป็น Lot ไหนและเหลือเท่าไหร่ ส่วนต่างจึงคิดแยกราย Lot

ยอดระบบ: แสดงตั้งแต่ยังไม่เลือก Lot — โหมด "รวมทุก Lot" = ยอดรวมทุก Lot ของสินค้านั้น · เลือก Lot แล้ว = ยอดของ Lot นั้น

สิทธิ์: อนุมัติต้อง inventory.adjustment.approve (สิทธิ์ผู้อนุมัติชุดเดียวกับปรับปรุงสต็อก)

8. โอนย้ายสาขา

เข้าจากไหน: เมนู คลังสินค้า → โอนย้ายสาขา — ใช้โอนระหว่างสาขาภายใน instance เดียวกัน (multi-branch)

ตัวกรองสถานะ(ทั้งหมด/รอจัดส่ง/รอรับ/รับแล้ว) · ตาราง: เลขที่โอน, สินค้า/Lot, จำนวน, ต้นทาง→ปลายทาง, สถานะ, วันที่

  1. กด "สร้างใบโอน" → ระบุสาขาปลายทาง + หมายเหตุ
  2. กด "เลือกสินค้าหลายรายการ" → เลือกสินค้า/lot/จำนวน (กันเลือก lot ซ้ำ และจำกัดไม่เกินคงเหลือของ lot นั้น)
  3. กด "สร้างใบโอน" → เข้าสถานะ "รอจัดส่ง"
  4. กด "จัดส่ง" ที่แถว → สต็อกตัดออกจากต้นทาง เข้าสถานะ "จัดส่งแล้ว"
  5. ปลายทางกด "รับของ" → เข้าสถานะ "รับแล้ว" สต็อกเข้าสาขาปลายทาง

9. โอนออกภายนอก

เข้าจากไหน: เมนู คลังสินค้า → โอนออกภายนอก — ใช้โอนไป instance อื่น (เช่น แบรนด์/คลินิกอื่นที่แยกระบบ)

ตัวอย่างหน้าตา: โอนออกภายนอก — 2 โหมด (ส่งออนไลน์ / Export ไฟล์) + ปุ่มไฟล์โอน/PDF
ส่งออนไลน์ถึง [คลินิกคู่] Export ไฟล์ (วิธีเดิม)
จัดส่ง ไฟล์โอน (JSON) PDF

มี binding = "ส่งออนไลน์" (กันพิมพ์ผิด) · ไม่มี = Export ไฟล์ให้ปลายทางอัปโหลดที่ §10 · จัดส่งแล้วตัดสต็อกจริง

แบนเนอร์สถานะการเชื่อมต่อคลินิก · ตัวกรองสถานะ(ทั้งหมด/ฉบับร่าง/จัดส่งแล้ว/ยกเลิก) · ตาราง: เลขที่โอน, ปลายทาง, รายการ, ต้นทุนรวม(ถ้ามีสิทธิ์), สถานะ

  • ถ้า instance นี้ "เชื่อมคลินิก" (binding) กับปลายทางอยู่แล้ว มีตัวเลือก 2 โหมด: "ส่งออนไลน์ถึง [ชื่อคลินิกคู่]" (ปลายทางกำหนดอัตโนมัติ) หรือ "Export ไฟล์ (วิธีเดิม)" (ระบุชื่อ instance ปลายทางเอง)
  • เลือกสินค้า/lot ผ่าน "เลือกสินค้าหลายรายการ" เหมือนโอนย้ายสาขา
  • กด "สร้างใบโอนออก" → เข้าสถานะ "ฉบับร่าง"
  • กด "จัดส่ง" (มี confirm dialog) → ตัดสต็อกจริง เข้าสถานะ "จัดส่งแล้ว" — โหมด "ส่งออนไลน์" จัดส่งแล้วไปโผล่ในเมนู "ข้ามคลินิก" (หัวข้อ 11) แทน
  • โหมดไฟล์: "จัดส่งแล้ว" มีปุ่ม "ไฟล์โอน" (ดาวน์โหลด) และ "PDF" (พิมพ์ใบโอน) ให้ส่งให้ปลายทางเอง

นำเข้าจากไฟล์: สร้างใบร่างเท่านั้น สต็อกยังไม่ตัดจนกว่าจะกด "จัดส่ง"

สิทธิ์: จัดการ(สร้าง/จัดส่ง/ยกเลิก) ต้อง inventory.transfer.manage · เห็นต้นทุนรวม inventory.cost.view

10. รับโอนเข้า (นำเข้าไฟล์)

เข้าจากไหน: เมนู คลังสินค้า → รับโอนเข้า (นำเข้าไฟล์) — ฝั่งรับของใบโอนออกภายนอกโหมดไฟล์จาก instance อื่น

ตัวกรองสถานะ(ทั้งหมด/รอตรวจสอบ/รับเข้าคลังแล้ว/ปฏิเสธ) · ตาราง: เลขที่โอน, ต้นทาง, รายการ, ต้นทุนรวม(ถ้ามีสิทธิ์), จับคู่สินค้า(✓ หรือ "ไม่จับคู่"), สถานะ

  1. กด "อัปโหลดไฟล์ใบโอน" → เลือกไฟล์ JSON ที่ได้จากปลายทางที่ส่งมา
  2. ระบบจับคู่ SKU กับสินค้าในคลังนี้อัตโนมัติ ถ้าจับคู่ได้ครบ (allMatched) รับเข้าคลังทันที ถ้าไม่ครบค้าง "รอตรวจสอบ"
  3. กด "รายละเอียด" ที่แถวเพื่อดูรายการ/แก้ SKU ที่ไม่จับคู่ — ปุ่ม "รับเข้าคลัง" กดได้เมื่อจับคู่ครบทุกแถว
  4. ไม่ต้องการรับ กด "ปฏิเสธ" (ใส่เหตุผลได้)

สิทธิ์: อัปโหลดไฟล์ต้อง inventory.transfer.manage · รับเข้าคลัง/ปฏิเสธ ต้อง inventory.transfer.review(สิทธิ์เข้มกว่า admin เท่านั้น)

11. ข้ามคลินิก

เข้าจากไหน: เมนู คลังสินค้า → ข้ามคลินิก (ต้องเปิดใช้ "การเชื่อมต่อคลินิก" ก่อน — ถ้ายังไม่เชื่อมเห็นหน้าว่างพร้อมปุ่ม "ไปเชื่อมคลินิก")

ป้ายสถานะเครือข่ายคลินิกมุมขวาบน + ปุ่ม "สมุดหนี้ของ" (badge จำนวนรายการหนี้ค้าง) และ (เฉพาะ hub+ผู้มีสิทธิ์) ปุ่ม "หน้าอนุมัติ" (badge จำนวนรออนุมัติ) · แท็บย่อย 4 แท็บ:

  • โอนของ — ประวัติใบโอนออนไลน์ระหว่างคลินิกที่เชื่อมกัน
  • ขอของ — ฝั่ง spoke ขอสินค้าจาก hub (ต้องเปิด policy)
  • มอบของ — ฝั่ง hub มอบสินค้าให้ spoke (ต้องเปิด policy)
  • ตัดคลังเชื่อม — ทั้งสองฝั่งตัดสต็อกแบบผูกบัญชีกัน (consignment, ต้องเปิด policy)

เชื่อมต่อไม่ได้ชั่วคราว (degraded) จะมีแบนเนอร์เหลืองแจ้งว่าคำขอ/เอกสารใหม่จะ "ค้างส่ง" แล้วส่งอัตโนมัติเมื่อกลับมาเชื่อมได้

สิทธิ์: "ขอของ" ใช้ได้เฉพาะฝั่งที่ไม่ใช่ hub · "มอบของ" เฉพาะฝั่ง hub · ทั้งสองต้องเปิด policy + สิทธิ์ inventory.transfer.manage

12. เคลมสินค้า (RMA)

เข้าจากไหน: เมนู คลังสินค้า → เคลมสินค้า (RMA)

แถบสรุป "มูลค่าเคลมค้าง (ยังเป็นทรัพย์สิน)" + จำนวนค้างเคลม + จำนวนใบเคลมค้าง · แท็บ "ใบเคลม" กับ "Issue จากเคส" (ปัญหาที่รายงานจาก EMR ที่ยังไม่ถูกเปิดใบเคลม)

Badge สถานะใบเคลม: เปิดเคลม(เหลือง) / ส่ง Supplier(ฟ้า) / คืนบางส่วน(ม่วง) / ได้ของคืนครบ(เขียว) / ตัดจำหน่าย(แดง) / ยกเลิก(เทา)

ตัวอย่างหน้าตา: ป้ายสถานะใบเคลม RMA + KPI เคลมค้าง + ปุ่มส่ง Supplier
มูลค่าเคลมค้าง
฿12,400
เปิดเคลม ส่ง Supplier คืนบางส่วน ได้คืนครบ ตัดจำหน่าย

เคลมค้าง = ยังเป็นทรัพย์สิน · "Issue จากเคส" = ปัญหาจาก EMR ที่ยังไม่เปิดใบเคลม · ตัดจำหน่าย = admin

  1. สร้างใบเคลมแบบเลือกเอง: กด "สร้างใบเคลม" → กรอก Supplier/หมายเหตุ → "เลือกสินค้าหลายรายการ" (เลือกตรง lot ไม่ใช่ FEFO อัตโนมัติ) → กรอกเหตุผลทุกแถวที่เลือก
  2. สร้างจาก Issue เคส: แท็บ "Issue จากเคส" → กด "สร้างใบเคลม" ที่แถว issue → ระบบดึงรายการที่ถูกตัดสต็อกในเคสนั้นมาให้อัตโนมัติ
  3. เปิดรายละเอียดใบเคลม → กด "ส่ง Supplier" (ใส่เลข RMA ได้) → เข้าสถานะ "ส่ง Supplier"
  4. ได้ของคืน กรอกจำนวนที่รับคืนต่อแถว → กด "บันทึกรับของคืน"
  5. ไม่ได้คืนครบและต้องการปิดยอด: กด "ตัดจำหน่าย / Refund" (ติ๊กได้ว่า Supplier คืนเป็นเงินแทนของ) → มูลค่าออกจาก "เคลมค้าง" ด้วยใบปรับปรุงสต็อก
  6. ยกเลิกใบเคลม (เฉพาะสถานะ "เปิดเคลม") → คืนสต็อกทั้งหมดกลับเข้าคลัง

สิทธิ์: จัดการ(สร้าง/ส่ง/รับคืน/ยกเลิก) inventory.claim.manage · ตัดจำหน่าย inventory.claim.writeoff(admin) · เห็นต้นทุน/มูลค่า inventory.cost.view

13. ประวัติเคลื่อนไหว (Ledger)

เข้าจากไหน: เมนู คลังสินค้า → ประวัติเคลื่อนไหว

คอลัมน์ "ผู้ทำ" บอกชื่อพนักงานที่ทำรายการนั้น (รับของเข้า ปรับปรุง ตัดจ่าย) — รายการที่ระบบทำให้เองแสดงว่า "ระบบ" ส่วนรายการจากการตรวจนับหรือการนำเข้าข้อมูลแสดงว่า "ตรวจนับสต็อก" / "นำเข้าข้อมูล" · ไฟล์ Excel ที่กดออกจากหน้านี้มีคอลัมน์ผู้ทำด้วย ใช้ไล่กับบัญชีได้

ตัวกรองช่วงวันที่(ค่าเริ่มต้น 30 วันล่าสุด) + ค้นหาสินค้า/lot + ชิปกรองประเภท: ทั้งหมด / ผิดปกติ(รวม เคลม+ปรับปรุง+เสีย) / รับเข้า / จ่ายออก / ปรับปรุง / ส่งเคลม / รับคืนเคลม / โอนออก / โอนเข้า / คืน / เสีย-ทำลาย

แถวประเภท "ปรับปรุง" และ "เคลม" มีพื้นหลังสีแดงอ่อนทั้งแถว + ป้ายกำกับ ให้สแกนหารายการผิดปกติได้เร็ว

ตัวอย่างหน้าตา: ตารางประวัติเคลื่อนไหว (Ledger) — จำนวน +/− + แถวผิดปกติไฮไลต์
ทั้งหมด ผิดปกติ รับเข้า จ่ายออก
สินค้า / Lotประเภทจำนวน
เข็ม 30G · N2408รับเข้า+120
Botox · A2409จ่ายออก−100
สำลีก้าน ปรับปรุงปรับปรุง−6

จำนวน +/− (เขียว/เทา) · แถว "ปรับปรุง"/"เคลม" พื้นแดงอ่อน · คอลัมน์ต้นทุน/Δมูลค่า เห็นเฉพาะผู้มีสิทธิ์ inventory.cost.view

คอลัมน์: วันเวลา, สินค้า/Lot, ประเภท, จำนวน(+/−), ต้นทุน/หน่วย + Δ มูลค่า(เฉพาะผู้มีสิทธิ์เห็นต้นทุน — Δ มูลค่าคือรายการปรับมูลค่าแบบไม่กระทบจำนวน เช่น เติมต้นทุนย้อนหลัง), เหตุผล/Ref(อ้างอิงเอกสารต้นทาง), ผู้ทำ

สิทธิ์: คอลัมน์ต้นทุน/Δ มูลค่า ต้อง inventory.cost.view

14. รอปรับสต็อก

เข้าจากไหน: เมนู คลังสินค้า → รอปรับสต็อก

คืออะไร: คิวสินค้าที่ตอนนี้ยอดในระบบติดลบเพราะถูกขาย/จ่ายออกไปก่อนที่ของจะรับเข้าจริง (ขายก่อนรับเข้า/oversell) — เป็นตัวถ่วงดุลของนโยบายนี้ ถ้าไม่มีหน้านี้ยอดติดลบจะสะสมไปเรื่อยจนไปเจอตอนนับสต็อก

การ์ด KPI: สินค้าที่ค้างอยู่, จำนวนที่ติดลบรวม, มูลค่าโดยประมาณ, ค้างเกิน N วัน (ค่า stale threshold กำหนดจากระบบ) · ตารางเรียงจากค้างนานสุดก่อน — แต่ละแถวกดขยายดูรายการเคลื่อนไหวที่ทำให้ติดลบ พร้อมลิงก์ "เปิดดูเคส" ถ้าที่มาคือ visit/เคสรักษา

ตัวอย่างหน้าตา: รอปรับสต็อก — KPI ยอดติดลบ + ตารางค้าง (เรียงค้างนานสุด)
จำนวนติดลบรวม
−34
ค้างเกิน 7 วัน
3
สินค้าคงเหลือค้างมา
Botox Allergan−209 วัน

ยอดติดลบจากขายก่อนรับเข้า (oversell) · รับของ (GR) เข้าปกติ = หักล้างหายเอง · ลิงก์ "เปิดดูเคส" ถ้าที่มาคือ visit

พฤติกรรม: เมื่อรับของเข้า(GR) ตามปกติ ยอดจะหักล้างและหายออกจากหน้านี้เอง ไม่ต้องทำอะไรเพิ่ม — มีปุ่มลัด "ตั้งค่าโหมด" ไปหน้าตั้งค่านโยบายขายก่อนรับเข้า

15. การจอง (Reservation)

เข้าจากไหน: เมนู คลังสินค้า → การจอง (admin-only, ต้องมีสิทธิ์ฟีเจอร์ inventory.reservation.manage)

ตัวกรองสถานะ(จองอยู่/ใช้แล้ว/คืนแล้ว/ทั้งหมด) · ตาราง: สินค้า, จำนวนจอง, เหตุผล, สถานะ, วันที่จอง, ผู้จอง

ขั้นตอน: กด "จองสต็อก" → ระบุเหตุผล + เลือกสินค้าหลายรายการ + จำนวนต่อรายการ → กด "จอง" → เข้าสถานะ "จองอยู่" → ภายหลังกด "ใช้" (บันทึกว่าถูกใช้จริง) หรือ "คืน" (ปล่อยจองกลับ) ที่แถว

ตัวอย่างหน้าตา: การจองสต็อก — ชิปสถานะ + แถวจอง + ปุ่ม "ใช้" / "คืน"
จองอยู่ ใช้แล้ว คืนแล้ว

Botox Allergan × 200u

อีเวนต์คลินิก 15 ส.ค. · จองอยู่

ใช้ คืน

admin-only (inventory.reservation.manage) · "จองอยู่" กันของไว้ · "ใช้" = บันทึกใช้จริง · "คืน" = ปล่อยจองกลับ

16. รายงานคลัง

เข้าจากไหน: เมนู คลังสินค้า → รายงานคลัง (admin-only, ต้องมีสิทธิ์ฟีเจอร์ inventory.report.view)

แท็บย่อย 5 แท็บ: ตัดสต็อก (คลังหลัก) (รายงานการตัดสต็อกจากการรักษา/ขาย) · มูลค่าสต็อก (รายการสินค้า+คงเหลือ+ทุน/หน่วย+มูลค่า พร้อมยอดรวมมุมบน เฉพาะผู้เห็นต้นทุน) · Aging / หมดอายุ (รายการ lot เรียงตามความเสี่ยงหมดอายุ) · เคลื่อนไหว (ลิงก์ไปหัวข้อ 13) · Waste Trend (แนวโน้มสินค้าที่เสีย/ทำลายรายช่วงเวลา)

ตัวอย่างหน้าตา: แท็บรายงานคลัง 5 แท็บ + KPI มูลค่าสต็อก + Export
ตัดสต็อก มูลค่าสต็อก Aging/หมดอายุ Waste Trend
มูลค่าสต็อกรวม
฿1.86M
Excel / PDF

admin-only (inventory.report.view) · มูลค่าสต็อก/ต้นทุนเห็นเฉพาะผู้มีสิทธิ์ · Export ได้ทุกแท็บยกเว้น "ตัดสต็อก"

Export: ปุ่ม Excel/PDF มุมขวาบน — ใช้ได้ทุกแท็บยกเว้น "ตัดสต็อก" ที่ export จากแท็บของมันเอง

17. จัดซื้อ — ภาพรวมโมดูล

เมนู "จัดซื้อ" เป็นโมดูลเสริม admin-only — ถ้ายังไม่เปิดใช้งานที่ระบบ ทุกหน้าในกลุ่มนี้แสดง "โมดูลจัดซื้อยังไม่เปิดใช้งาน — กรุณาติดต่อผู้ดูแลระบบ" แทนเนื้อหา ไม่ใช่หน้าเปล่า/error

17.1 แดชบอร์ดจัดซื้อ

เข้าจากไหน: เมนู จัดซื้อ → แดชบอร์ดจัดซื้อ

การ์ด KPI: ร่าง, รออนุมัติ, รอรับสินค้า, มูลค่า PO เดือนนี้ · ตาราง "ใบสั่งซื้อล่าสุด" (10 รายการ) พร้อมปุ่ม "รายการ PO ทั้งหมด"

17.2 ผู้จัดจำหน่าย

เข้าจากไหน: เมนู จัดซื้อ → ผู้จัดจำหน่าย

ค้นหาชื่อ/เลขภาษี/ผู้ติดต่อ + กรองสถานะใช้งาน · ตาราง: ชื่อผู้จัดจำหน่าย, เลขประจำตัวผู้เสียภาษี, โทรศัพท์, เครดิตเทอม(วัน), Lead Time(วัน), WHT(%), สถานะ

ขั้นตอน: กด "เพิ่มผู้จัดจำหน่าย" หรือไอคอนดินสอที่แถวเพื่อแก้ไข → กรอกฟอร์ม (ชื่อบังคับ ที่เหลือไม่บังคับ) → บันทึก · "นำเข้าจากไฟล์" ทำ bulk upload ได้ (upsert ด้วยชื่อผู้ขาย)

ตัวอย่างหน้าตา: ตารางผู้จัดจำหน่าย (เครดิตเทอม / Lead Time / WHT / สถานะ)
ค้นหาชื่อ / เลขภาษี / ผู้ติดต่อ เพิ่มผู้จัดจำหน่าย
ผู้จัดจำหน่ายเครดิตWHTสถานะ
บจก. เมดิคอล30 วัน3%ใช้งาน

คอลัมน์: เครดิตเทอม/Lead Time/WHT% ใช้ตอนสร้าง PO+3-way match · "นำเข้าจากไฟล์" upsert ด้วยชื่อผู้ขาย

17.3 ใบสั่งซื้อ (PO)

เข้าจากไหน: เมนู จัดซื้อ → ใบสั่งซื้อ (PO)

ตัวกรอง: ค้นหาเลขที่/ผู้จัดจำหน่าย, สถานะ, ผู้จัดจำหน่าย, ช่วงวันที่ · ตาราง: เลขที่ PO, ผู้จัดจำหน่าย, สถานะ, วันที่รับของ, รวม(รวม VAT), วันที่สร้าง

ขั้นตอนสร้าง PO:

  1. กด "สร้าง PO ใหม่" → เลือกผู้จัดจำหน่าย + วันที่คาดว่าจะรับสินค้า
  2. เพิ่มรายการสินค้า (ทีละแถว หรือ "เลือกสินค้าหลายรายการ") → กรอกจำนวน, ราคา/หน่วย, ส่วนลด, VAT% ต่อแถว — คำนวณก่อน VAT/VAT/รวมทั้งสิ้นแบบเรียลไทม์
  3. บันทึก → PO เข้าสถานะ ร่าง

ขั้นตอนหลังสร้าง (หน้ารายละเอียด PO): ร่าง → "ส่งขออนุมัติ" → รออนุมัติ → ผู้มีสิทธิ์กด "อนุมัติ" (→ อนุมัติแล้ว) หรือ "ปฏิเสธ" (→ กลับเป็นร่าง) → "ส่งให้ผู้จัดจำหน่าย" → ส่งแล้ว — ทุกสถานะที่ยังไม่รับของกด "ยกเลิก PO" ได้ (ยกเลิกไม่ได้ถ้ามีการรับของแล้ว) — ส่งแล้ว/รับบางส่วน กด "ปิด PO" เพื่อปิดโดยไม่รอรับครบ (close short) — พิมพ์ PO ได้ทุกสถานะ

นำเข้าจากไฟล์: สร้าง PO ร่างจากไฟล์ได้ — อนุมัติ/ส่งให้ผู้ขายยังเป็นขั้นตอนแยกตามปกติ

ตัวอย่างหน้าตา: สถานะใบสั่งซื้อ (PO) + ปุ่มสร้าง/ส่งขออนุมัติ/ส่งให้ผู้จัดจำหน่าย
ร่าง รออนุมัติ อนุมัติแล้ว ส่งแล้ว รับบางส่วน
สร้าง PO ใหม่ ส่งขออนุมัติ ส่งให้ผู้จัดจำหน่าย

ทั้งเมนูจัดซื้อ = admin/super_admin เท่านั้น · ยกเลิก PO ได้ก่อนรับของ · "ปิด PO" = close short (ปิดโดยไม่รอรับครบ)

สิทธิ์: ทั้งหน้าเมนูจัดซื้อทั้งหมด admin/super_admin เท่านั้น — role อื่นเข้าเมนูนี้จะถูกเด้งออก

17.4 รับของตาม PO

เข้าจากไหน: ไม่มีในเมนูซ้ายโดยตรง — เข้าจากปุ่ม "รับของ" ที่หน้ารายละเอียด PO (สถานะ ส่งแล้ว/อนุมัติแล้ว/รับบางส่วน)

รายการสินค้าที่ยังค้างรับ (พรีฟิลจากยอดสั่ง−ยอดที่รับไปแล้ว) แต่ละรายการต้องกรอก: จำนวนที่รับ, Lot Number(บังคับ), วันหมดอายุ, ต้นทุน/หน่วย(พรีฟิลจาก PO แก้ไขได้), ตำแหน่งจัดเก็บ — รับเกินยอดสั่งมีกรอบเตือนเหลือง "รับเกินกว่าที่สั่ง"

ขั้นตอน: กรอกครบทุกแถวที่รับจริง (ลบแถวที่ยังไม่รับได้) → กด "บันทึกการรับสินค้า" → ระบบสร้างใบรับสินค้า (GR) ที่ผูกกับ PO นี้อัตโนมัติ แล้วพากลับไปหน้ารายละเอียด PO — ยอด "รับแล้ว" ของแต่ละบรรทัด PO อัปเดตตาม

สรุปสิทธิ์ที่พบบ่อยในโมดูลนี้

สิทธิ์ (feature key)ใช้ที่ไหนfallback role เดิม
inventory.cost.viewเห็นคอลัมน์ต้นทุน/มูลค่าทุกหน้า (GR, Movements, Reports, Claims, Transfers, TransferImports)ทุกคน (true)
inventory.cost.fillเติมต้นทุนใน GR ที่ costPendingadmin
inventory.product.create / .editเพิ่ม/แก้ไขสินค้า, จัดการหมวดหมู่admin หรือ sale
inventory.lot.createสร้าง lot ใหม่, แก้ไข lotadmin หรือ sale
inventory.receive.approveอนุมัติ/ตีกลับ GR ที่ต้องตรวจทานadmin
inventory.adjustment.approveอนุมัติ+ดำเนินการปรับปรุงสต็อก, อนุมัตินับสต็อกadmin
inventory.transfer.manageสร้าง/จัดส่ง/ยกเลิกใบโอน (สาขา, ภายนอก, ข้ามคลินิก)admin หรือ sale
inventory.transfer.reviewรับเข้าคลัง/ปฏิเสธใบโอนนำเข้าadmin
inventory.claim.manageสร้าง/ส่ง/รับคืนใบเคลมadmin หรือ sale
inventory.claim.writeoffตัดจำหน่ายเคลมค้างadmin
inventory.import.uploadปุ่ม "นำเข้าจากไฟล์" ทุกหน้า (ต้องเปิดฟีเจอร์ที่ระบบด้วย)admin
inventory.reservation.manageเข้าเมนู "การจอง" ทั้งเมนูadmin-only
inventory.report.viewเข้าเมนู "รายงานคลัง" ทั้งเมนูadmin-only
เข้าเมนู "จัดซื้อ" ทั้งกลุ่มadmin/super_admin only (ไม่มี feature key แยก)

หมายเหตุ: คอลัมน์ "fallback role เดิม" คือสิทธิ์ที่ยังใช้ได้แม้ยังไม่ตั้งค่า feature key ใน RBAC — ระบบเป็นแบบ 2-ชั้น: ถ้าเปิดใช้ RBAC feature permission แล้ว จะเช็คสิทธิ์ที่ตั้งไว้แทน role เดิม

อ้างอิงทุกเมนู

🧮 บัญชี, รายงาน, ค้างชำระ, รวมการอนุมัติ

ระบบรายงานการเงิน ภาษี AP/AR และศูนย์รวมการอนุมัติ

ทุกหน้าในกลุ่มนี้อยู่ใต้เมนูซ้ายกลุ่ม หลังบ้าน — ส่วนใหญ่เห็นเฉพาะ แอดมิน/ผู้จัดการ/บัญชี (เมนูมีเครื่องหมาย adminOnly) พนักงานขายทั่วไปจะไม่เห็นเมนูกลุ่มนี้ในแถบซ้าย

1. รายงาน

เข้าจากเมนู: กลุ่ม หลังบ้าน → รายงาน

รายงานที่เพิ่มเข้ามา: แนวโน้มยอดขายรายเดือนของสินค้า/บริการ (เลือกรายการที่สนใจ สลับดูเป็นจำนวนครั้งหรือยอดเงิน และซ้อนเส้นรวมได้) · ตารางการเติบโตแยกตามช่วงอายุลูกค้า · อันดับสินค้า/บริการขายดีที่เทียบกับช่วงก่อนหน้า โดยรายการที่เปลี่ยนชื่อจะถูกยุบรวมกับชื่อใหม่ให้เอง ไม่นับแยกกัน

หัวหน้าหน้าจอ "ระบบรายงานและบัญชี" — "ข้อมูลเชิงลึกทางการเงินและการวิเคราะห์การดำเนินงาน" มุมขวาบนมีปุ่มรีเฟรช

1.1 ตัวกรองช่วงวันที่ (ใช้ร่วมกันทุกแท็บ ยกเว้นแดชบอร์ดวิเคราะห์บางส่วน)

ชิปปุ่ม: วันนี้ / เมื่อวาน / สัปดาห์นี้ / เดือนนี้ / 90 วันที่ผ่านมา / ปีนี้ / กำหนดเอง

1.2 แท็บบนสุด 7 แท็บ

แท็บเนื้อหา
ภาพรวมKPI การเงินสรุปช่วงที่เลือก
วิเคราะห์กำไรตารางกำไร/ขาดทุนรายวัน
บันทึกรายการรายงานยอดรับชำระ (บิลทุกใบ)
ค่ามือ / คอมมิชชั่นค่ามือแพทย์ต่อหัตถการ + สรุปคอมมิชชั่นพนักงาน
จัดการค่าใช้จ่ายบันทึก/ดูรายการค่าใช้จ่ายดำเนินงาน
รายงานแยกตามหมวดเลือกดูรายงาน 10 ประเภทจากเมนูด้านซ้าย
แดชบอร์ดวิเคราะห์แดชบอร์ดวิเคราะห์เชิงลึก 8 มุมมอง พร้อมเทียบช่วงเวลา

หากคลินิกมีการเชื่อมเครือข่าย (binding) จะมีปุ่มเพิ่ม "รายงานเครือข่าย" ต่อท้ายแท็บ — ไปหน้าคนละหน้า ไม่ใช่แท็บภายใน

ตัวอย่างหน้าตา: แถบแท็บรายงาน + การ์ด KPI ภาพรวม
ภาพรวม วิเคราะห์กำไร บันทึกรายการ ค่ามือ / คอมมิชชั่น
รายได้รวม
฿7.8M
▲ 8.4%
กำไรขั้นต้น
฿4.2M
▼ 2.1%

1.3 แท็บ "ภาพรวม"

การ์ดแสดงอะไร
รายได้รวม (เขียว)รายรับสุทธิในช่วงเวลานี้
ต้นทุนสินค้า (COGS) (ส้ม)ต้นทุนล็อตสินค้าที่ตัดขาย
ค่าใช้จ่ายรวม (แดง)ต้นทุนแฝง + ค่าดำเนินงาน
กำไรสุทธิ (เขียวอ่อน)กำไรสุทธิ + อัตรากำไร %

ส่วนล่าง 2 คอลัมน์: สถานะคลังสินค้า (การ์ด "สินค้าหมด"/"สินค้าใกล้หมด" + ปุ่ม "จัดการคลังสินค้า →") · สัดส่วนรายได้ (แถบเปรียบเทียบ "ขายสินค้า" vs "บริการ/หัตถการ")

1.4 แท็บ "วิเคราะห์กำไร"

ตาราง "รายละเอียดกำไร/ขาดทุน" รายวัน: วันที่/รายรับ/ต้นทุน(COGS)/ค่าใช้จ่ายแฝง/กำไรสุทธิ/อัตรากำไร แถวท้ายสรุป "รวมตามช่วงเวลา" ด้านล่างมีตาราง "ประสิทธิภาพรายการสินค้า (ยอดขายล่าสุด)" แจกแจงรายสินค้า/บริการ

1.5 แท็บ "บันทึกรายการ"

หัวตาราง "รายงานยอดรับชำระ" — รายการบิลที่ชำระเสร็จในช่วงเวลาที่เลือก คลิกรหัสบิลเพื่อดูรายละเอียด (เปิดหน้า EMR เคสนั้น ถ้าไม่ผูกเคสเปิดหน้าต่างสรุปบิลแทน)

แถบตัวกรอง: ช่องค้นหา "ค้นหา HN..." · ดรอปดาวน์ "ทุกแพทย์ผู้รักษา" · ชิปปุ่มช่องทางชำระ (เงินสด/โอนเงิน/บัตร/QR/ลิงค์/เงินในบัตร/บัตรกำนัล/อื่นๆ/e-Wallet — เลือกได้หลายอัน) · ปุ่ม "ล้าง filter" · checkbox "รวมรายการในบิล (xlsx)" · ปุ่ม export CSV/Excel

1.6 แท็บ "ค่ามือ / คอมมิชชั่น"

ก) รายงานค่ามือ (ต่อหัตถการ) — 1 แถว = 1 หัตถการ/บริการที่ทำ (ยา/เวชภัณฑ์แสดงเป็นคอลัมน์ซ้อนใต้บริการนั้น) คอลัมน์ ค่ามือ คือ DF ที่ระบบคำนวณและตั้งจ่ายอัตโนมัติแล้ว (accrue เข้าเงินเดือน/เจ้าหนี้) — ไม่ต้องกรอก Excel เพิ่ม (กรอกซ้ำ = เสี่ยงจ่ายหมอซ้ำ) เห็นคอลัมน์นี้ว่างในสลิปคือ "แสดงผลว่าง" ไม่ใช่ "ยังไม่ได้คำนวณ" คลิกแถวเปิดหน้าต่างดูรายละเอียด (ยา, จำนวน, ผู้ให้บริการทุกคน, ปุ่ม "เปิดเคส OPD")

ข) สรุปคอมมิชชั่น — การ์ด KPI 3 ใบ: ค่าคอมมิชชั่นสะสมทั้งหมด/จ่ายแล้วทั้งหมด/ค้างจ่ายรวม ตาราง "สรุปรายชื่อพนักงานและค่าคอมมิชชั่น": ชื่อพนักงาน/บทบาท, ค่าคอมทั้งหมด, จ่ายแล้ว, ค้างจ่าย, ปุ่ม "บันทึกการจ่ายเงิน" (เปิดเมื่อมียอดค้างจ่าย > 0) มีปุ่ม Export Excel ที่ export ทั้งตาราง

ตัวอย่างหน้าตา: สรุปคอมมิชชั่น KPI 3 ใบ + ปุ่ม "บันทึกการจ่ายเงิน"
สะสม
฿84K
จ่ายแล้ว
฿62K
ค้างจ่าย
฿22K
บันทึกการจ่ายเงิน

ค่ามือ (DF) accrue อัตโนมัติ ห้ามกรอก Excel ซ้ำ · ปุ่ม "บันทึกการจ่าย" เปิดเฉพาะแถวค้างจ่าย > 0

1.7 แท็บ "จัดการค่าใช้จ่าย"

ตัวกรอง "ทุกหมวดหมู่" ตารางรายการค่าใช้จ่าย: วันที่/รายการค่าใช้จ่าย/ประเภท/จำนวนเงิน(-฿)/ปุ่มลบ มีปุ่ม "เพิ่มค่าใช้จ่าย" เปิดหน้าต่าง "บันทึกค่าใช้จ่ายการดำเนินงาน" — เลือกประเภทค่าใช้จ่าย, จำนวนเงิน, วันที่, หมายเหตุ, ปุ่ม "ยืนยันบันทึกค่าใช้จ่าย"

1.8 แท็บ "รายงานแยกตามหมวด"

เมนูด้านซ้าย "เลือกรายงาน" 10 รายการ:

รายงานคำอธิบายบนจอ
รายงานยอดรับชำระความเคลื่อนไหวการรับเงินแยกตามช่องทาง
รายงานการขายคอร์สคอร์สที่ซื้อ ประวัติ และสถานะการใช้งาน
รายงานยอดขายสินค้า/บริการสรุปรายได้และจำนวนชิ้นแยกรายการ
รายงานการใช้สินค้า/บริการประวัติการใช้และหักคอร์ส/หัตถการ
รายงานสต็อกเคลื่อนไหวการรับจ่ายและการตัดยอดสินค้าคลัง
รายงานบัตรสมาชิกรายชื่อสมาชิก วงเงินคงเหลือ และสถานะ
รายงานมัดจำ/คืนเงินยอดมัดจำคงค้างและรายการคืนเงินลูกค้า
รายงานการแลกของแถมพิเศษการแลกของแถมและสิทธิพิเศษจากคะแนนสะสม
รายงานการใช้จ่ายลูกค้ายอดใช้จ่ายรวม เฉลี่ย/ครั้ง และความถี่ต่อลูกค้า
รายงานวงเงินลูกค้าวงเงินคงเหลือต่อลูกค้า แยกกระเป๋าเงินจริง/โบนัส และยอดรวม

1.9 แท็บ "แดชบอร์ดวิเคราะห์"

แถบเลือกมุมมอง (สูงสุด 8 มุมมอง, มุมมองแรกเห็นเฉพาะผู้มีสิทธิ์ report.overview.view): ภาพรวมธุรกิจ · วิเคราะห์ผู้ป่วย · วิเคราะห์รายรับ · วิเคราะห์การนัดหมาย · วิเคราะห์บัตรสมาชิก · มัดจำ & คืนเงิน · สินค้า & บริการยอดนิยม · การใช้จ่ายของลูกค้า

ทุกมุมมอง (ยกเว้น "ภาพรวมธุรกิจ") มีแถบ "เทียบกับ:" ให้เลือก: ช่วงก่อนหน้า(เท่ากัน) / ช่วงเดียวกันปีก่อน / เลือกเอง — ใต้แถบมีแคปชันบอกช่วงวันที่จริงทั้ง 2 ฝั่งที่กำลังเทียบ ถ้าช่วงที่เลือกยังไม่มีข้อมูล ระบบขึ้นแถบแจ้ง "ช่วงที่เลือกยังไม่มีข้อมูล — ข้อมูลล่าสุดถึง [เดือน/ปี]" พร้อมลิงก์ "ไปเดือนล่าสุดที่มีข้อมูล"

แต่ละมุมมองแสดงการ์ด KPI พร้อมตัวเลขเทียบช่วงก่อนหน้า (ลูกศรขึ้น/ลง)

1.10 บทบาทที่ใช้

ต้องมีสิทธิ์ reports.view (ปกติแอดมิน/ผู้จัดการ/บัญชี) มุมมอง "ภาพรวมธุรกิจ" ในแดชบอร์ดวิเคราะห์ต้องมีสิทธิ์ report.overview.view เพิ่มเติม

2. ค้างชำระ (AR)

เข้าจากเมนู: กลุ่ม หลังบ้าน → ค้างชำระ (AR)

หน้านี้เป็นรายงานเชิงปฏิบัติการ (ให้แคชเชียร์/หน้าเคาน์เตอร์ตามหนี้ลูกค้าที่จ่ายไม่ครบ) — คนละมุมกับ "ลูกหนี้ค้างชำระ (AR)" ในเมนูบัญชี (ข้อ 4.6) ซึ่งเป็นรายงานฝั่งบัญชี/ภาษี หน้านี้อ่านข้อมูลได้อย่างเดียว (read-only)

ตัวอย่างหน้าตา: ค้างชำระ (AR) เชิงปฏิบัติการ — KPI + ตาราง (ป้ายเกิน 90 วัน)
ลูกค้าค้างชำระ
14 ราย
ลูกค้าค้างชำระค้างเก่าสุด
สมหญิง ใจดี฿5,00098 วัน
Export Excel

read-only (ตามหนี้เชิงปฏิบัติการ) · เรียงอายุหนี้ เกิน 90 วัน (แดง) โทรก่อน · ปรับยอดต้องทำที่เคส/POS

การ์ด KPIแสดงอะไร
ลูกค้าค้างชำระจำนวนราย (สีแดงเมื่อมากกว่า 0)
ยอดค้างชำระรวมยอดเงินรวมทั้งหมด
เกิน 90 วันยอดของกลุ่มค้างนานที่สุด
จำนวนบิลค้างจำนวนบิลที่ยังไม่ปิด

ช่องค้นหา "ค้นหาชื่อลูกค้า / OPD" ตาราง: ลูกค้า(+OPD) / ยอดค้าง / อายุหนี้(ป้ายสี: 0–30/31–60/61–90/เกิน 90 วัน) / บิลค้าง / ค้างเก่าสุด(จำนวนวัน+วันที่) / ครั้งล่าสุด แถวท้ายสรุป "ยอดค้างชำระรวมทั้งสิ้น" ปุ่ม Export Excel มุมขวาบน

บทบาทที่ใช้: ต้องมีสิทธิ์ reports.ar.view (แอดมิน/ผู้จัดการ/บัญชี) หน้านี้กรองตามสาขาอัตโนมัติ

3. รวมการอนุมัติ

เข้าจากเมนู: กลุ่ม หลังบ้าน → รวมการอนุมัติ — ในเมนูซ้ายจะมีตัวเลขส้มบนไอคอนเมื่อมีรายการรออนุมัติ

หน้านี้รวมคำขอที่ต้องอนุมัติจากทุกโมดูลไว้จุดเดียว แทนที่จะต้องไปหาแต่ละหน้า

หัวหน้าหน้าจอ "รวมการอนุมัติ" — "แยกเป็นแท็บตามประเภทงาน — ตัวเลขสีส้มบนแท็บคือจำนวนที่รออนุมัติ" มีรายการค้างมุมขวาขึ้นป้าย "รออนุมัติ N รายการ"

แท็บอนุมัติอะไรผู้อนุมัติ
เปลี่ยนเซลล์เปลี่ยนเซลล์ผู้ดูแลเคสSale Director / ผู้ดูแลระบบ
รับเข้าคลังตรวจสอบและอนุมัติใบรับสินค้าเข้าคลังหัวหน้าคลัง / ผู้ดูแลระบบ
แก้บิลหลังปิดอนุมัติการแก้ไขราคา/บิลหลังปิดการขายผู้ดูแลระบบ
ตัวอย่างหน้าตา: แท็บรวมการอนุมัติ 3 แท็บ + การ์ดคำขอ (ก่อน→หลัง)
เปลี่ยนเซลล์ 3 รับเข้าคลัง แก้บิลหลังปิด

คุณสมชาย → คุณ B (เซลล์)

เคส #2569-0142 · ขอโดยแคชเชียร์ A · 3 นาทีที่แล้ว

อนุมัติ ปฏิเสธ

แต่ละแท็บมี badge จำนวนค้าง · การ์ดโชว์ค่าก่อน (ขีดฆ่า) → หลัง · แท็บที่ไม่มีสิทธิ์เห็นไอคอนกุญแจ

ตัวอย่างหน้าตา: ตัวเลขรออนุมัติบนเมนู + ปุ่มอนุมัติ/ปฏิเสธ + toast
รวมการอนุมัติ 3 ปฏิเสธ อนุมัติ
อนุมัติแล้ว — ผู้ขายของบิลนี้เป็น B

ผู้อนุมัติจริงที่แสดงในแต่ละแท็บอ่านจากการตั้งค่านโยบายอนุมัติของคลินิก — ถ้าบัญชีของผู้ใช้ไม่อยู่ในรายชื่อผู้อนุมัติของแท็บนั้น แต่ยังเปิดหน้านี้เข้ามาได้ จะเห็นแท็บนั้นเป็นสถานะล็อก(ไอคอนกุญแจ) พร้อมข้อความอธิบายว่าต้องมีสิทธิ์อะไร

3.2 การอนุมัติแต่ละรายการ

แต่ละรายการแสดง: รายละเอียดงาน (เคส/บิล/PO ที่เกี่ยวข้อง), ผู้ขอ+เวลาที่ขอ, เหตุผล(ถ้ามี) — แต่ละแถวมีปุ่ม ปฏิเสธ และ อนุมัติ

  • แท็บ เปลี่ยนเซลล์: คำขอมาจากตะกร้า POS ก่อนเปิดเคส → "ยังไม่เปิดเคส — อนุมัติล่วงหน้าได้ ระบบจะผูกให้เมื่อเปิดเคส"
  • แท็บ รับเข้าคลัง: แสดงเลขที่ใบรับสินค้า, เลข PO อ้างอิง(ถ้ามี), ผู้จัดจำหน่าย, จำนวนรายการ, ยอดรวม
  • แท็บ แก้บิลหลังปิด: แสดงประเภทการแก้ไข (แก้ราคารายการ/แก้ยอดสุทธิทั้งบิล/เพิ่มรายการย้อนหลัง), เคสที่เกี่ยวข้อง, ค่าก่อน→หลังแก้ไข

หากผู้ใช้ไม่มีสิทธิ์อนุมัติงานใดเลย หน้าจะแสดง "คุณยังไม่มีสิทธิ์อนุมัติรายการใด ๆ"

3.3 บทบาทที่ใช้

เข้าเมนูได้ต้องเป็นแอดมิน/ผู้ดูแลระบบ หรือผู้จัดการ (managerAllowed) — แต่การอนุมัติจริงแต่ละแท็บขึ้นกับนโยบายอนุมัติที่ตั้งไว้ แท็บ "เปลี่ยนเซลล์" และ "แก้บิลหลังปิด" ฝั่งเซิร์ฟเวอร์บังคับให้เป็นผู้ดูแลระบบเท่านั้นโดยปริยาย

4. บัญชี

เข้าจากเมนู: กลุ่ม หลังบ้าน → บัญชี (เมนูย่อยกางออกเป็น 7 หัวข้อ)

โมดูลนี้เป็นโมดูลเสริมที่คลินิกอาจเปิด/ปิดได้ — ถ้าคลินิกไม่ได้เปิดใช้งาน ทุกหน้าย่อยในกลุ่มนี้จะแสดง "โมดูลบัญชียังไม่ได้เปิดใช้งานสำหรับคลินิกนี้"

ทุกหน้าย่อยกรองข้อมูลตามสาขาที่กำลังดูอยู่โดยอัตโนมัติ และต้องมีสิทธิ์ระดับแอดมิน/ผู้ดูแลระบบ (บางหน้าต้องมีสิทธิ์เฉพาะเพิ่มเติม)

4.1 ใบกำกับภาษี

การ์ด KPI 4 ใบ: จำนวนเอกสาร / ฐานภาษีรวม / ภาษีขายรวม (VAT) / ยอดรวมทั้งสิ้น

ตัวอย่างหน้าตา: KPI ภาษีขาย + แถวใบกำกับ (ป้ายเต็มรูป/อย่างย่อ) + Export
ภาษีขาย (VAT)
฿12,460
จำนวนเอกสาร
184
ลูกค้าฐานภาษีVATประเภท
สมหญิง ใจดี฿5,607฿392เต็มรูป

กรองตามงวดภาษี (เดือน+ปี พ.ศ.) · ลูกค้าไม่มีชื่อ = "ลูกค้าทั่วไป (walk-in)" · Export Excel เก็บยื่นสรรพากร

ตัวกรอง: เลือกงวดภาษีเป็นเดือน+ปี(พ.ศ.) — กรองตามเดือนที่ออกเอกสารภาษี ไม่ใช่ช่วงวันที่อิสระ

ตาราง: เลขที่เอกสาร / วันที่ / ลูกค้า(ไม่มีชื่อขึ้น "ลูกค้าทั่วไป (walk-in)") / ฐานภาษี / VAT / รวม / ประเภท(เต็มรูป/อย่างย่อ) / ปุ่ม "รายละเอียด" ปุ่ม Export Excel — สิทธิ์: accounting.taxinvoice.view

4.2 ตั้งค่า VAT

อัตราภาษีมูลค่าเพิ่ม (VAT) และการจดทะเบียนภาษีกำหนดโดยกรมสรรพากร — การแก้ไขค่าเหล่านี้มีผลทางกฎหมายต่อการออกใบกำกับภาษี กรุณาตรวจสอบกับนักบัญชีและกฎหมายปัจจุบันก่อนบันทึกเสมอ

ฟอร์มตั้งค่า: สวิตช์ "จดทะเบียนภาษีมูลค่าเพิ่ม" · อัตรา VAT(%) (ค่าเริ่มต้นตามกฎหมายปัจจุบัน 7%) · วันที่มีผล · เลขประจำตัวผู้เสียภาษี(13 หลัก) · ชื่อนิติบุคคล/ชื่อตามทะเบียน · ที่อยู่ตามทะเบียนภาษี

ตัวอย่างหน้าตา: สวิตช์จดทะเบียน VAT + ฟอร์ม field
จดทะเบียนภาษีมูลค่าเพิ่ม — เปิด
อัตรา VAT7%
เลขผู้เสียภาษี (13 หลัก)0 1055 xxxxx xx x

แก้ไขมีผลทางกฎหมาย ตรวจกับนักบัญชีก่อน · ออกใบกำกับย้อนหลัง (backfill) ต้องผ่านทีมเทคนิค · sig accounting.vat.config

ปุ่ม "บันทึกการตั้งค่า" ด้านล่างมีตาราง "ประวัติการแก้ไข" (วันที่มีผล/สถานะ VAT/อัตรา/แก้ไขเมื่อ-โดยใคร) — การออกใบกำกับภาษีย้อนหลัง (backfill) ต้องทำผ่านทีมเทคนิค ไม่สามารถสั่งจากหน้านี้ได้ — สิทธิ์: accounting.vat.config

4.3 ตั้งค่าการบัญชี

  1. ออกใบกำกับ/ลง GL อัตโนมัติเมื่อขาย — สวิตช์เปิด/ปิด
  2. เกณฑ์อายุลูกหนี้ — "ตามวันที่ทำรายการ (txn_date)" หรือ "ตามวันครบกำหนดชำระ (due_date)" (ตัวเลือกหลังยังไม่รองรับจริง — "เร็วๆ นี้")
  3. วิธีคิดต้นทุน — "ต้นทุนเจาะจง (Specific/FEFO)" / "ต้นทุนถัวเฉลี่ยถ่วงน้ำหนัก" (เป็นค่าอ้างอิงแสดงผลเท่านั้น ไม่เปลี่ยนพฤติกรรมคิดต้นทุนจริง)
  4. วิธีจัดการ VAT เมื่อแปลงแพ็คเกจเป็นเครดิต — "ออกใบลดหนี้ (Credit Note)" หรือ "โอนภายใน (Internal Transfer)"
  5. ล็อกงวดบัญชี — เลือกเดือน/ปี แล้วกด "ล็อกงวดนี้" (คำเตือน "อย่าล็อกงวดที่ยังมีรายการขายค้างลงบัญชี") ตารางแสดงงวดที่ล็อกอยู่ พร้อมปุ่ม "ปลดล็อก" ต่อแถว

สิทธิ์: accounting.vat.config

4.4 ภ.พ.30

หัวข้อ "ภ.พ.30 — แบบแสดงรายการภาษีมูลค่าเพิ่ม" ตัวกรองเดือน+ปี(พ.ศ.) มุมขวาบน + ปุ่ม CSV

การ์ด KPI 4 ใบ: ยอดขาย(ไม่รวม VAT) / ภาษีขาย(Output VAT) / จำนวนใบกำกับภาษี / ยอดรวม(รวม VAT)

ตัวอย่างหน้าตา: ภ.พ.30 — KPI ภาษีขาย + ปุ่ม CSV
ภาษีขาย (Output VAT)
฿12,460
ยอดขาย (ไม่รวม VAT)
฿178K
CSV

"ภาษีขาย (Output VAT)" = ตัวเลขหลักที่กรอกในแบบ · ตาราง "รายละเอียดรายวัน" ตรวจไขว้ไม่ให้วันไหนขาด

ตาราง "รายละเอียดรายวัน": วันที่ / จำนวนเอกสาร / ยอดขาย(ไม่รวม VAT) / ภาษีขาย(VAT) — สิทธิ์: accounting.report.view

4.5 ใบแจ้งหนี้ซื้อ (AP)

หน้านี้มีทั้งดู/สร้าง/อนุมัติ — ต่างจากหน้ารายงานอื่นที่เป็น read-only

ตัวกรอง: ค้นหา Supplier/PO Ref/GR Ref, ดรอปดาวน์สถานะ, ช่วงวันที่จาก-ถึง

ตาราง: ผู้จัดจำหน่าย / PO Ref / GR Ref / สถานะ(ร่าง, จับคู่แล้ว, ไม่ตรง, อนุมัติแล้ว, จ่ายแล้ว) / 3-way Match(ตรงกัน, จำนวนไม่ตรง, ราคาไม่ตรง, เกินมูลค่า PO, ยังไม่รับสินค้า) / ยอดสุทธิ / วันที่สร้าง / ปุ่มดูรายละเอียด

ตัวอย่างหน้าตา: สถานะบิล AP (ร่าง→จับคู่แล้ว→อนุมัติแล้ว→จ่ายแล้ว) + ผล 3-Way Match
ร่าง จับคู่แล้ว อนุมัติแล้ว จ่ายแล้ว
3-Way ตรงกัน จำนวนไม่ตรง เกินมูลค่า PO
รัน 3-Way Matchบันทึกการจ่าย + WHT

3-Way เทียบ ใบแจ้งหนี้ ↔ PO ↔ GR · ผลไม่ตรง (อำพัน/แดง) ต้องเคลียร์ก่อนอนุมัติ · จ่ายแล้ว = หัก WHT พร้อมกัน

สร้างใบแจ้งหนี้ใหม่: ปุ่ม "สร้างใบแจ้งหนี้" → เลือกผู้จัดจำหน่าย, อ้างอิง PO/GR(ถ้ามี), ตารางรายการสินค้า (รหัส, ชื่อ, จำนวน, ราคา/หน่วย, VAT%, WHT%) ปุ่ม "เพิ่มรายการ" — สรุปยอดก่อน VAT/VAT นำเข้า/หัก WHT/สุทธิต้องจ่าย คำนวณสดขณะกรอก

หน้าต่างรายละเอียด (slide-in จากขวา) — สถานะ+ผลการจับคู่ 3-way, ตารางรายการ, สรุปยอด, ปุ่มดำเนินการตามสถานะ: ร่าง → "รัน 3-Way Match" · จับคู่แล้ว → "อนุมัติ" · อนุมัติแล้ว → "บันทึกการจ่าย + WHT" — สิทธิ์: accounting.ap.view

4.6 ภ.ง.ด.3/53 (WHT)

หัวข้อ "รายงาน WHT — ภ.ง.ด.3 / ภ.ง.ด.53" — เป็น WHT ฝั่งเจ้าหนี้/ซื้อ (คนละหน้ากับ WHT เงินเดือนพนักงานที่อยู่ในเมนู HR → "รายงาน WHT / 50 ทวิ")

ตัวกรอง: ดรอปดาวน์ประเภท ภ.ง.ด.3(บุคคลธรรมดา)/ภ.ง.ด.53(นิติบุคคล), เดือน, ปี(พ.ศ.) + ปุ่ม "CSV ยื่นสรรพากร"

การ์ด KPI 3 ใบ: จำนวนรายการ WHT / ฐานภาษีรวม / ภาษีหัก ณ ที่จ่ายรวม

ตาราง: ผู้ถูกหัก ณ ที่จ่าย(+เลขผู้เสียภาษี) / วันที่จ่าย / ฐาน(บาท) / อัตรา(%) / ภาษีหัก(บาท) แถวท้ายสรุปฐานรวม+ภาษีหักรวม — สิทธิ์: accounting.report.view

ตัวอย่างหน้าตา: รายงาน WHT — ดรอปดาวน์ ภ.ง.ด.3/53 + KPI ภาษีหัก + CSV
ประเภทแบบภ.ง.ด.53 (นิติบุคคล)
ฐานภาษีรวม
฿84,000
ภาษีหัก ณ ที่จ่าย
฿2,520
CSV ยื่นสรรพากร

WHT ฝั่งเจ้าหนี้/ซื้อ (คนละหน้ากับ WHT เงินเดือนใน HR) · ภ.ง.ด.3 = บุคคลธรรมดา · ภ.ง.ด.53 = นิติบุคคล

4.7 ลูกหนี้ค้างชำระ (AR)

หัวข้อ "ลูกหนี้ค้างชำระตามอายุหนี้ (AR Aging)" — รายงานฝั่งบัญชี แยกช่วงอายุหนี้แบบมาตรฐาน (คนละหน้ากับ "ค้างชำระ (AR)" ในข้อ 2 ซึ่งเป็นมุมปฏิบัติการหน้าร้าน)

การ์ด KPI 4 ใบ: ปัจจุบัน+1–30 วัน / 31–60 วัน / 61–90 วัน / เกิน 90 วัน — ตาราง: ลูกหนี้/ปัจจุบัน/1–30/31–60/61–90/เกิน 90/รวม แถวท้ายสรุปยอดค้างชำระรวมทั้งสิ้น ปุ่ม Export Excel — สิทธิ์: reports.ar.view

4.8 อายุหนี้เจ้าหนี้ (AP Aging)

หัวข้อ "เจ้าหนี้ค้างชำระตามอายุหนี้ (AP Aging)" — ตรงข้ามกับ AR Aging (ฝั่งที่คลินิกเป็นหนี้ผู้จัดจำหน่าย)

การ์ด KPI 4 ใบ: ปัจจุบัน+1–30 วัน / 31–60 วัน / 61–90 วัน / เกิน 90 วัน — ตาราง: เจ้าหนี้/ปัจจุบัน/1–30/31–60/61–90/เกิน 90/รวม แสดงวันที่ "ณ วันที่:" ของข้อมูล แถวท้ายสรุปยอดค้างจ่ายรวมทั้งสิ้น ปุ่ม Export Excel — สิทธิ์: accounting.ap.view

5. สรุปเส้นทางเข้าถึง

หน้าจอเมนูสิทธิ์หลัก
รายงานหลังบ้าน → รายงานreports.view
ค้างชำระ (AR)หลังบ้าน → ค้างชำระ (AR)reports.ar.view
รวมการอนุมัติหลังบ้าน → รวมการอนุมัติตามนโยบายอนุมัติแต่ละแท็บ
ใบกำกับภาษีหลังบ้าน → บัญชี → ใบกำกับภาษีaccounting.taxinvoice.view
ตั้งค่า VATหลังบ้าน → บัญชี → ตั้งค่า VATaccounting.vat.config
ตั้งค่าการบัญชีหลังบ้าน → บัญชี → ตั้งค่าการบัญชีaccounting.vat.config
ภ.พ.30หลังบ้าน → บัญชี → ภ.พ.30accounting.report.view
ลูกหนี้ค้างชำระ (AR)หลังบ้าน → บัญชี → ลูกหนี้ค้างชำระ (AR)reports.ar.view
ใบแจ้งหนี้ซื้อ (AP)หลังบ้าน → บัญชี → ใบแจ้งหนี้ซื้อ (AP)accounting.ap.view
ภ.ง.ด.3/53 (WHT)หลังบ้าน → บัญชี → ภ.ง.ด.3/53 (WHT)accounting.report.view
อายุหนี้เจ้าหนี้ (AP Aging)หลังบ้าน → บัญชี → อายุหนี้เจ้าหนี้ (AP Aging)accounting.ap.view
อ้างอิงทุกเมนู

🧑‍💼 ระบบบริหารงานบุคคล (HR)

ของฉัน (ทุกคน) และ จัดการบุคคล (HR/ผู้ดูแลระบบ)

เข้าจากเมนู: ระบบบริหารงานบุคคล (HR) — เมนูย่อยแบ่งเป็น 2 กลุ่มเสมอ: "ของฉัน" (พนักงานทุกคนเห็น มุมมองข้อมูลของตัวเอง) และ "จัดการบุคคล" (เฉพาะผู้มีสิทธิ์ HR/ผู้ดูแลระบบ มุมมองข้อมูลของทั้งทีม+อนุมัติ+ตั้งค่า)

หลายหน้าใน 2 กลุ่มนี้เป็น component เดียวกัน สลับมุมมองด้วยพารามิเตอร์ scope (self=ของฉัน, team=จัดการบุคคล) — เช่น "แดชบอร์ดของฉัน" กับ "แดชบอร์ดทีม" เป็นไฟล์เดียวกัน แค่คนละพารามิเตอร์ ข้อมูลของทีมจะไม่ถูกส่งมาเลยถ้า role ไม่ใช่ผู้จัดการ (เซิร์ฟเวอร์เป็นคนกรอง ไม่ใช่แค่ซ่อนปุ่มที่หน้าจอ)

ส่วนที่ 1 — "ของฉัน" (พนักงานทุกคนใช้ได้)

1.1 แดชบอร์ดของฉัน

หน้าแรกของโมดูล HR แสดง: การ์ด "เข้างานวันนี้" (KPI เดียวที่พนักงานทั่วไปเห็น) · การ์ด "เข้าถึงด่วน" (ปุ่มลัด: ข้อมูลส่วนตัว, ตารางงานของฉัน, ลงเวลา/เวลาของฉัน, ลาของฉัน, สลิปเงินเดือนของฉัน, ใบอนุญาตของฉัน) · ปฏิทินการลา (จุดวันที่มีการลาอนุมัติแล้ว)

ตัวอย่างหน้าตา: การ์ด "เข้างานวันนี้" + เข้าถึงด่วน
เข้างานวันนี้
18
ลงเวลา ลาของฉัน สลิปเงินเดือน

"เข้างานวันนี้" = KPI เดียวที่พนักงานทั่วไปเห็น · เข้าถึงด่วน ลัด 6 หน้าในกลุ่มของฉัน

1.2 กิจกรรมของฉัน

ไทม์ไลน์กิจกรรมของตัวเอง (self-only — เซิร์ฟเวอร์ส่งเฉพาะเหตุการณ์ของผู้ใช้ที่ล็อกอิน) จัดกลุ่มตามวัน ("วันนี้"/"เมื่อวาน"/ชื่อวันที่เต็ม) แต่ละรายการมีไอคอน+ป้ายหมวดหมู่+เวลา บางรายการคลิกได้เพื่อไปหน้าที่เกี่ยวข้อง

ตัวกรอง: ชิปหมวดหมู่ · ช่วงวันที่ "ตั้งแต่"/"ถึง" · ปุ่ม "ล้างตัวกรอง"

1.3 ข้อมูลส่วนตัว

หน้าโปรไฟล์ตัวเอง 2 คอลัมน์: ซ้าย — รูปโปรไฟล์ (คลิก/hover อัปโหลดใหม่), ชื่อ-นามสกุล, ตำแหน่ง, ป้ายบทบาท, บทบาท, วันเริ่มงาน · ขวา — การ์ด "รายละเอียดส่วนบุคคล" (รหัสพนักงาน แก้ไม่ได้, เบอร์โทรฉุกเฉิน, ที่อยู่ปัจจุบัน แก้ไขได้เมื่อกด "แก้ไขข้อมูล") และการ์ด "ข้อมูลการเงิน" (ป้าย "สำหรับตรวจสอบเท่านั้น" — ดูอย่างเดียว: เงินเดือนพื้นฐาน, สถานะประกันสังคม, ธนาคาร+เลขบัญชี+ชื่อบัญชี)

กด "บันทึกข้อมูล" บันทึกเฉพาะข้อมูลส่วนบุคคล — ข้อมูลการเงินแก้ได้เฉพาะฝ่าย HR ผ่านหน้า "ข้อมูลพนักงาน"

1.4 ตารางงานของฉัน

2 แท็บ: "ตารางงานรายสัปดาห์" และ "ขอแลกเวร"

แท็บตารางงานรายสัปดาห์ (พนักงานส่งแผนเข้างานล่วงหน้าเป็นรายสัปดาห์ — คนละหน้ากับ "จัดตารางกะ" ของแอดมิน): เลื่อนดูสัปดาห์ก่อนหน้า/ถัดไป · แต่ละวันมีสวิตช์ "มาทำงาน" (เปิดแล้วกรอกเวลาเข้า-ออก) · ระบบล็อกฟอร์มไว้ล่วงหน้าด้วยตารางกะเริ่มต้น (ถ้ามี) · กติกา: แต่ละกะต้องมีเวลารวมอย่างน้อย 9 ชั่วโมง (ทำงาน 8 + พัก 1) และห้ามส่งข้ามเดือน · กด "ส่งตารางงาน" → "รออนุมัติ" → อนุมัติแล้วฟอร์มล็อกแก้ไขไม่ได้

แท็บขอแลกเวร: กด "+" เพิ่มคำขอ → เลือก "กะของฉัน" (เฉพาะกะที่มอบหมายจริงในอีก 60 วันข้างหน้า) + "เพื่อนร่วมงาน" ที่จะขอแลกด้วย + เหตุผล — รายการคำขอของตัวเอง (ทั้งผู้ขอและผู้ถูกขอ) พร้อมป้ายสถานะ: รออนุมัติ/อนุมัติแล้ว/ปฏิเสธ/ยกเลิก — อนุมัติทำที่หน้า "อนุมัติตารางงาน" ฝั่งแอดมินเท่านั้น ผู้ขอและผู้ถูกขออนุมัติ/ปฏิเสธคำขอของตัวเองไม่ได้

1.5 ลงเวลา / เวลาของฉัน

แผงลงเวลาส่วนตัว (ซ้าย) — นาฬิกาเวลาปัจจุบันเรียลไทม์ + ปุ่มใหญ่ "ลงชื่อเข้างาน" (ฟ้า, ยังไม่ clock-in) / "ลงชื่อออกงาน" (แดง, clock-in แล้ว — ยังไม่ครบ 8 ชม. เปิดหน้าต่างเตือน "บันทึกออกงานก่อนกำหนด") — แสดงป้าย "ยืนยัน GPS: ภายในพื้นที่สาขา"

บันทึกเวลาของฉัน (ขวา) — ตาราง/ปฏิทิน (สลับได้) เฉพาะประวัติของตัวเอง คอลัมน์ "แก้ไขเวลา": แถวไหน "ไม่ได้ลงชื่อออก" มีปุ่ม "ส่งคำขอแก้เวลา" — กรอกเวลาออกงานที่ถูกต้อง(บังคับ)+เวลาเข้างานที่จะแก้(ถ้าต้องการ)+เหตุผล(บังคับ) ส่งไปรออนุมัติที่หน้า "อนุมัติแก้เวลา" — ปุ่ม ส่งออก Excel/PDF มีให้เช่นกัน

ตัวอย่างหน้าตา: ปุ่มลงชื่อเข้า/ออกงาน + ป้ายยืนยัน GPS + ป้าย "ไม่ได้ลงชื่อออก"
ยืนยัน GPS: ภายในพื้นที่สาขา
ลงชื่อเข้างาน ลงชื่อออกงาน ไม่ได้ลงชื่อออก

ออกก่อนครบ 8 ชม. = กล่องเตือน · แถว "ไม่ได้ลงชื่อออก" (แดง) มีปุ่ม "ส่งคำขอแก้เวลา" (แก้เวลาไม่สร้าง OT)

1.6 ลาของฉัน

การ์ดโควตาการลา (ทุกประเภทที่มี พร้อมจำนวนวันคงเหลือ/ทั้งหมด แถบสีบอกสัดส่วน) — กด "ขอลาหยุด" มุมขวาบน → เลือกประเภทการลา, วันที่เริ่ม-สิ้นสุด, เหตุผล/หมายเหตุ(บังคับ) → ส่งคำขอ — ตัวกรองช่วงวันที่ + ตารางประวัติการลา (สลับตาราง/ปฏิทิน) ป้ายสถานะ: รออนุมัติ/อนุมัติแล้ว/ปฏิเสธ

ตัวอย่างหน้าตา: การ์ดโควตาการลา (แถบสัดส่วน) + ปุ่ม "ขอลาหยุด" + ป้ายสถานะ
ลาพักร้อน4/6 วัน
ขอลาหยุด
รออนุมัติ อนุมัติแล้ว ปฏิเสธ

โควตาไม่พอ = ปฏิเสธก่อนบันทึก (ยกเว้น "ลาไม่รับค่าจ้าง") · นับวันเต็มเสมอ · ไม่มีปุ่มยกเลิกใบลาบนหน้าจอ

1.7 ขอ OT

ตารางประวัติคำขอ OT เดือนปัจจุบัน: วันที่, เวลา, อัตรา, จำนวนเงิน(คำนวณอัตโนมัติหลังอนุมัติเท่านั้น — ก่อนอนุมัติ "—"), เหตุผล, สถานะ — กด "ขอ OT" → กรอกวันที่, เวลาเริ่ม-สิ้นสุด, อัตราค่าล่วงเวลา (1.5 เท่าวันทำงานปกติ / 2 เท่าวันหยุด / 3 เท่าวันหยุดนักขัตฤกษ์), เหตุผล(บังคับ อย่างน้อย 3 ตัวอักษร) → ส่งรอฝ่ายบุคคล/ผู้ดูแลอนุมัติ

ตัวอย่างหน้าตา: ฟอร์มขอ OT — เลือกอัตราตัวคูณ + จำนวนเงิน ("—" ก่อนอนุมัติ)
1.5× วันทำงาน 2× วันหยุด 3× นักขัตฤกษ์
จำนวนเงิน:(คำนวณหลังอนุมัติ)

สูตร: ฐานเงินเดือน÷30÷8×ชั่วโมง×ตัวคูณ · เฉพาะ OT ที่อนุมัติแล้วเข้าเงินเดือนงวดถัดไป

1.8 สลิปเงินเดือนของฉัน

หน้าดูอย่างเดียวของสลิปที่จ่ายแล้วเท่านั้น (ฉบับร่างไม่แสดง) — การ์ดสรุป: เงินได้สะสม, รายการหักสะสม, เงินสุทธิสะสม, จำนวนสลิป — ตารางรายงวด: งวด, เงินได้รวม, รายการหัก(ประกันสังคม+เงินกู้+WHT รวมกัน), เงินสุทธิ, สถานะ "จ่ายแล้ว"

ตัวอย่างหน้าตา: การ์ดสรุปสลิป + ตารางรายงวด (สถานะจ่ายแล้ว)
เงินสุทธิสะสม
฿186,400
จำนวนสลิป
8
งวดเงินได้หักสุทธิสถานะ
ก.ค. 2569฿28,000฿4,600฿23,400จ่ายแล้ว

1.9 ใบอนุญาตของฉัน

หน้าดูอย่างเดียว (เพิ่ม/แจ้งเตือนทำได้เฉพาะฝ่าย HR) — การ์ดสรุป: ใช้งานได้, ใกล้หมดอายุ(≤90 วัน), หมดอายุ, ทั้งหมด — ตาราง: ชื่อ+ประเภทใบอนุญาต, เลขที่, หน่วยงานที่ออก, วันหมดอายุ, ป้ายสถานะ (ใช้งานได้/ใกล้หมดอายุ/หมดอายุ/ระงับใช้งาน)

ส่วนที่ 2 — "จัดการบุคคล" (HR / ผู้ดูแลระบบเท่านั้น)

หน้าในกลุ่มนี้ต้องมีสิทธิ์เฉพาะ (เช่น hr.employee.manage, hr.shift.manage, hr.leave.approve ฯลฯ) — ผู้ไม่มีสิทธิ์เข้าตรง URL จะเห็น "เฉพาะ HR / ผู้ดูแลระบบเท่านั้น" หรือถูกเด้งกลับ /hr

2.1 แดชบอร์ดทีม

ไฟล์เดียวกับ "แดชบอร์ดของฉัน" แต่เปิดมุมมองทีม: การ์ด KPI 4 ใบ (พนักงานทั้งหมด, เข้างานวันนี้, รออนุมัติลา, ใบอนุญาตใกล้หมด) · เข้าถึงด่วน (เพิ่มพนักงานใหม่, จัดตารางกะ, ประมวลผลเงินเดือน, ตรวจสอบใบอนุญาต, อนุมัติการลา, บันทึกเวลาทีม) · การ์ด "รออนุมัติการลา" (4 รายการล่าสุด+ลิงก์ดูทั้งหมด) · ปฏิทินการลารายเดือนของทั้งทีม

2.2 ข้อมูลพนักงาน

ทำเนียบพนักงานทั้งหมด — การ์ด KPI: พนักงานทั้งหมด, ทำงานอยู่, ทดลองงาน, เงินเดือนเฉลี่ย — สลับตาราง/การ์ดกริด ค้นหาชื่อ/รหัส/แผนก แต่ละแถวมีปุ่ม "ดูรายละเอียด" (ทุกคน) และ "แก้ไข"/"ลบ" (เฉพาะ hr.employee.manage)

ตัวอย่างหน้าตา: ทำเนียบพนักงาน — KPI + แถว (ป้าย Mirror) + ปุ่มเพิ่มพนักงาน
พนักงานทั้งหมด
24
เพิ่มพนักงาน
พนักงานตำแหน่งการจัดการ
มธน้องมิ้นท์พยาบาลแก้ไข
สชนพ.สมชาย Mirrorแพทย์ล็อก

"เพิ่มพนักงาน" กรอก 4 ส่วน (บัญชี/ส่วนตัว/การเงิน/ตารางงาน) · badge "Mirror" = read-only (แก้ที่คลินิกหลัก)

กด "เพิ่มพนักงาน" กรอก: ข้อมูลบัญชีผู้ใช้(username/password/email/เบอร์โทร), ชื่อ-นามสกุล, บทบาท, รหัสพนักงาน, แผนก, ตำแหน่ง, วันเริ่มงาน, เลขบัตรประชาชน, วันเกิด, เพศ, เงินเดือนพื้นฐาน, ประกันสังคม(เปิด/ปิด+อัตรา+เพดาน), เงินกู้(ยอดคงเหลือ+หักรายเดือน), บัญชีธนาคาร, สาขาที่สังกัด, ตารางงานเริ่มต้น และถ้าเลือกบทบาท "doctor" มีช่องตั้งค่าค่าตอบแทนแพทย์(ประเภท+อัตรา)

ข้อจำกัด multi-branch/mirrorพนักงานที่ระบบทำสำเนามาจากคลินิกหลัก (badge "Mirror จาก [ชื่อคลินิกหลัก]") เป็นread-only บนสาขานี้ — ปุ่มแก้ไข/ลบปิดใช้งาน ต้องไปแก้ที่คลินิกหลักเท่านั้น ป้ายเหลือง "role ไม่ตรง preset — ใช้ staff ชั่วคราว" แปลว่าตำแหน่งของพนักงานคนนั้นไม่มีคู่เทียบในสาขานี้ ระบบจึงกำหนด role เป็น "staff" ชั่วคราว

2.3 จัดตารางกะ

ตารางกริด "พนักงาน × วันในสัปดาห์" สำหรับแอดมิน/HR กำหนดกะเอง (คนละหน้ากับ "ตารางงานของฉัน" ที่พนักงานส่งคำขอเอง):

ตัวอย่างหน้าตา: กริดจัดตารางกะ (พนักงาน × วัน) + ปุ่มบันทึกตาราง
พนักงานจ.อ.พ.
น้องมิ้นท์ เช้า บ่าย หยุด
น้องแนน ดึก เช้า +
บันทึกตาราง (5)

คลิกช่องว่างเลือกกะด่วน (เช้า/บ่าย/ดึก/หยุด) · เกิน 9 ชม./ซ้อนทับ = เตือนหลังบันทึก (ไม่บล็อก)

  • คลิกช่องว่างใต้ชื่อพนักงาน+วันที่ เปิด popover เลือกกะด่วน: เช้า(08:00-16:00), บ่าย(13:00-21:00), ดึก(21:00-05:00), หยุด
  • ปุ่ม "บันทึกตาราง (N)" — บันทึกเฉพาะช่องที่แก้ไข ถ้าชั่วโมงรวมเกิน 9 ชม./วัน หรือกะซ้อนทับ ระบบเตือนหลังบันทึก (ไม่ block แต่แจ้งเป็นแบนเนอร์)
  • ปุ่ม "คัดลอกสัปดาห์ก่อน" — คัดลอกตารางกะทั้งสัปดาห์ก่อนหน้ามาสัปดาห์ที่กำลังดู
  • ป้ายที่มาของกะ (origin badge): ไอคอนเขียว "พนักงานอนุมัติ" = จากคำขอพนักงานที่อนุมัติแล้ว · "T" เทา = จาก template อัตโนมัติ · "รออนุมัติ" ส้ม = มีคำขอพนักงานรออนุมัติทับอยู่ (คลิกไปหน้าอนุมัติได้ทันที)
  • แอดมินคลิกทับช่องที่มาจาก "พนักงานอนุมัติ" → กล่องยืนยัน "ทับกะที่อนุมัติแล้ว" ก่อนเสมอ
  • ตัวกรอง: ค้นหาชื่อ/รหัส, ตำแหน่ง, แผนก, สถานะกะ (ทั้งหมด/มีกะแล้ว/ยังไม่จัด) — admin/super_admin เลือก "ทุกสาขา" ได้

2.4 วางแผนกะการทำงาน

หน้าดูภาพรวมกะที่จัดไว้แล้ว (ไม่ใช่หน้าจัดกะ — ดูอย่างเดียว) 3 มุมมอง: รายวัน (การ์ดพนักงานแต่ละคนที่มีกะวันนั้น พร้อมป้ายสถานะจริง กำลังทำงาน/กลับแล้ว/ยังไม่มา เทียบกับกะที่วางแผน+เวลาเข้า-ออกจริง) · รายสัปดาห์ (ตารางพนักงาน×วัน แสดงกะเป็นแถบข้อความ) · รายเดือน (ปฏิทินเต็มเดือน แต่ละวันแสดงจำนวนคนที่มีกะ+ชื่อสูงสุด 2 คน) — ปุ่มส่งออก Excel

2.5 อนุมัติตารางงาน

2 แท็บ: ตารางงานรายสัปดาห์ (การ์ดคำขอรอนุมัติแต่ละพนักงาน — ปุ่ม "อนุมัติ" ทันที หรือ "ปฏิเสธ" เปิดหน้าต่างรายละเอียด กรอกเหตุผล(บังคับ)) และ แลกเวร (คิวอนุมัติคำขอแลกเวร — ผู้ขอหรือผู้ถูกขอเองอนุมัติคำขอของตัวเองไม่ได้)

2.6 อนุมัติ OT

ตารางคำขอ OT ทุกคน กรองด้วยชิปสถานะ (รออนุมัติ/อนุมัติแล้ว/ปฏิเสธ/ทั้งหมด — เริ่มต้น "รออนุมัติ") คอลัมน์: พนักงาน, วันที่, เวลา, อัตรา, จำนวนเงิน, เหตุผล, สถานะ/การจัดการ — "อนุมัติ" ทันที หรือ "ปฏิเสธ" กรอกเหตุผล(บังคับ)

ตัวอย่างหน้าตา: ตารางคำขอ OT + ชิปกรองสถานะ + ปุ่มอนุมัติ/ปฏิเสธ
รออนุมัติ อนุมัติแล้ว ปฏิเสธ

น้องมิ้นท์ · 18:00–21:00

1.5× · ฿1,050

อนุมัติ ปฏิเสธ

จำนวนเงินคำนวณตอนยื่น (ไม่ใช่ตอนอนุมัติ) · "ปฏิเสธ" ต้องกรอกเหตุผล · ผู้อนุมัติอนุมัติคำขอของตัวเองไม่ได้

2.7 อนุมัติแก้เวลา

ตารางคำขอแก้เวลาที่พนักงานส่งมา (กรณีลืม clock-out) กรองด้วยชิปสถานะเช่นเดียวกับ OT คอลัมน์: พนักงาน, วันที่บันทึก, เวลาเข้างาน(ขอแก้), เวลาออกงาน(ขอแก้), เหตุผล, ยื่นเมื่อ, สถานะ/การจัดการ — อนุมัติทันทีหรือปฏิเสธพร้อมเหตุผล(บังคับ)

2.8 บันทึกเวลาทีม

ไฟล์เดียวกับ "ลงเวลา/เวลาของฉัน" แต่เปิดมุมมองทีม (ไม่มีแผงลงเวลาส่วนตัว — ดูของคนอื่นเท่านั้น): การ์ด KPI รายวัน (มาทำงาน, มาสาย, ลางาน, ปฏิบัติงานนอกสถานที่) — ตาราง/ปฏิทินของทุกคน ค้นหาชื่อ/ตำแหน่ง ส่งออก Excel/PDF — ป้ายสถานะต่อแถว: ตรงเวลา, สาย, นอกสถานที่, ลา และป้ายเสริม "ไม่ได้ลงชื่อออก"

2.9 อนุมัติการลา

ไฟล์เดียวกับ "ลาของฉัน" แต่เปิดมุมมองทีม เพิ่ม 3 แท็บ: คำขอลา (ตารางคำขอลาทุกคน กรองสถานะ+ช่วงวันที่ อนุมัติ/ปฏิเสธด่วนต่อแถว — ผู้อนุมัติอนุมัติคำขอลาของตัวเองไม่ได้) · โควต้า (ตารางโควต้าการลาของพนักงานทุกคน × ทุกประเภทการลา) · ตั้งค่า (จัดการประเภทการลาที่มีในระบบ — "เพิ่มประเภท" กรอกชื่อ, รหัส(slug), จำนวนวันต่อปี, คำอธิบาย)

ปุ่ม "ขอลาหยุด" ในมุมมองนี้มีช่องเพิ่ม "ขอลาในนามของ" ให้ HR ยื่นคำขอลาแทนพนักงานคนอื่นได้

ตัวอย่างหน้าตา: อนุมัติการลา — 3 แท็บ + การ์ดคำขอ + ปุ่มอนุมัติ/ปฏิเสธ
คำขอลาโควต้าตั้งค่า

น้องมิ้นท์ · ลาป่วย 2 วัน

28–29 ก.ค. · เหลือโควตา 28 วัน

อนุมัติปฏิเสธ

อนุมัติแล้วตัดโควตาทันที · ผู้อนุมัติอนุมัติคำขอลาของตัวเองไม่ได้ · แท็บ "โควต้า" แก้รายคน (รองรับลาครึ่งวันด้วยมือ)

2.10 ทะเบียนใบอนุญาต

ไฟล์เดียวกับ "ใบอนุญาตของฉัน" แต่เปิดมุมมองทีม (compliance board): การ์ด KPI (ใช้งานได้/ใกล้หมดอายุ ≤90 วัน/หมดอายุ/ทั้งหมด) — กด "เพิ่มใบอนุญาต" → เลือกพนักงาน, ประเภทใบอนุญาต (ใบอนุญาตแพทย์/พยาบาล/วุฒิบัตรเฉพาะทาง/ใบอนุญาตประกอบกิจการคลินิก/อื่นๆ), เลขที่, วันที่ออก, วันหมดอายุ, หน่วยงานที่ออก — แต่ละแถวมีปุ่ม "ส่งแจ้งเตือนหมดอายุ" (นอกเหนือจากที่ระบบส่งอัตโนมัติทุก 6 ชั่วโมง)

ตัวอย่างหน้าตา: ทะเบียนใบอนุญาต — KPI + ป้ายสถานะ + ปุ่มส่งแจ้งเตือนหมดอายุ
ใกล้หมดอายุ
3
หมดอายุ
1

นพ.สมชาย · ใบประกอบวิชาชีพ

ว.12345 · หมดอายุ 30 ก.ย. 2569

ใกล้หมดอายุ

≤90 วัน = ป้าย "ใกล้หมดอายุ" (เหลือง) · ปุ่มสามเหลี่ยม = ส่งแจ้งเตือนซ้ำด้วยมือ · ค่าเริ่มต้นไม่บล็อกการทำงาน (แจ้งเตือนอย่างเดียว)

2.11 เงินเดือน & ค่าเคส

ตัวช่วยประมวลผลเงินเดือนรายเดือน แบบ 3 ขั้นตอน:

  1. เลือกงวด — เลือกเดือน+ปีที่จะประมวลผล กด "เริ่มสร้างเงินเดือน"
  2. ตรวจสอบฉบับร่าง — ตารางพนักงานทุกคนที่ปฏิบัติงานในงวดนั้น (คำนวณอัตโนมัติ): เงินเดือนฐาน, ค่าหัตถการ(doctor fee), คอมมิชชั่น/อื่นๆ, WHT, หักรวม, สุทธิ, สถานะ(ฉบับร่าง/จ่ายแล้ว), ปุ่ม "ส่งสลิป LINE" ต่อคน — ปุ่ม "คำนวณใหม่" รีเฟรชฉบับร่าง
  3. ดำเนินการจ่าย — สรุปยอดรวม (รายได้รวม/รายการหักรวม/ภาษี WHT รวม/ยอดจ่ายสุทธิรวม) กด "ยืนยันและประมวลผลทั้งหมด"
การป้องกัน (soft-lock WHT)ถ้าพนักงานคนไหนมีเงินได้แต่ระบบคำนวณภาษีหัก ณ ที่จ่ายออกมาเป็น ฿0 ระบบจะหยุดกระบวนการยืนยันทั้งหมดและเปิดกล่อง "ตรวจพบ WHT = 0" บังคับให้ระบุเหตุผลที่จะข้ามการหักภาษีรายการนี้ (อย่างน้อย 10 ตัวอักษร) ก่อนดำเนินการต่อ

2.12 รายงาน WHT / 50 ทวิ

3 แท็บ: หนังสือรับรอง 50 ทวิ (ตารางพนักงานทุกคน × ปีภาษี: รายได้รวม, ภาษีหัก ณ ที่จ่าย, สถานะ(ออกแล้ว/ยังไม่ออก) ปุ่ม "ออกเอกสาร"/"ออกใหม่" ต่อคน + "ดาวน์โหลด") · ภ.ง.ด.1 (สรุปรายเดือนของภาษีหักเงินได้พนักงาน+ยอดรวมทั้งปี) · ภ.ง.ด.3 (สรุปรายเดือนของภาษีหักนิติบุคคล/ว่าจ้าง แบบเดียวกัน) — ปุ่มส่งออก Excel และ CSV เลือกปีภาษีได้ (ปีปัจจุบัน+ย้อนหลัง 2 ปี)

2.13 รายงาน HR

ศูนย์รวมรายงาน HR แบบการ์ดตามหมวด — การ์ด KPI บนสุด: พนักงานทั้งหมด, แผนก, เข้างานวันนี้, เงินเดือนเฉลี่ย

การ์ดรายงานที่ส่งออกได้จริง (ปุ่ม Excel+PDF ทุกใบ): รายชื่อพนักงาน, บันทึกเวลาเข้า-ออก, การลา, เงินเดือน, ภาษีหัก ณ ที่จ่าย(50 ทวิ)

การ์ดที่ขึ้น "เร็วๆ นี้" (ยังไม่มีข้อมูล/endpoint รองรับ — ปุ่มส่งออกปิดใช้งานไว้ตรงๆ ไม่ใช่ export ปลอม): OT(ค่าล่วงเวลา), การประเมินผล, การสรรหา/ผู้สมัคร, ทรัพย์สิน/เบิก/สวัสดิการ

2.14 ตั้งค่า SSO

หมายถึงประกันสังคม ไม่ใช่ single sign-on — ตั้งค่าอัตรา+ฐานเงินเดือนที่ใช้คำนวณเงินสมทบ: อัตราเงินสมทบ(%), ฐานขั้นต่ำ(บาท), ฐานสูงสุด(บาท) — "เงินสมทบสูงสุด/เดือน" คำนวณอัตโนมัติจากฐานสูงสุด×อัตรา (แก้ไม่ได้) มีแบนเนอร์เตือนตรวจสอบกฎหมายก่อนแก้ (ค่าตามกฎหมายปัจจุบัน: 5%, ฐาน ฿1,650–฿15,000)

2.15 ตั้งค่าภาษี (PIT/WHT)

2 ส่วนในหน้าเดียว: ตารางอัตราภาษีเงินได้บุคคลธรรมดา (PIT) — ขั้นบันได (เพดานรายได้+อัตรา%) เพิ่ม/ลบขั้นได้ + ค่าลดหย่อนส่วนตัว/หักค่าใช้จ่ายแบบเหมา(%)/เพดานค่าใช้จ่ายเหมา + สวิตช์ "หักเงินสมทบประกันสังคมออกจากเงินได้" และ ภาษีหัก ณ ที่จ่าย (WHT) — อัตรา WHT บริการ(%ตามกฎหมาย 3%) + ประเภทเงินได้(category)

2.16 นโยบาย HR รายสาขา

เฉพาะ admin/super_admin — เลือกสาขาจากดรอปดาวน์ก่อน แล้วตั้งค่า 2 การ์ด: นโยบายลงเวลา (Clock) — จุดศูนย์กลาง Geofence(lat/lng), รัศมี Geofence(เมตร, แนะนำ 100–300), รายการ Wi-Fi SSID ที่อนุญาต, สวิตช์ "บังคับต่อ Wi-Fi ก่อน Clock-In" (ไม่กรอกอะไรเลย=ไม่ตรวจสอบตำแหน่ง/Wi-Fi) และ ข้อมูลผู้เสียภาษี (สำหรับออก 50 ทวิ) — เลขประจำตัวผู้เสียภาษี(13 หลัก), ชื่อนิติบุคคล, ที่อยู่

บทบาทที่ใช้

กลุ่มเข้าถึงได้ทำอะไรได้
พนักงานทั่วไปเมนู "ของฉัน" ทั้งหมดดู/แก้ข้อมูลส่วนตัวบางส่วน, ลงเวลา, ขอลา, ขอ OT, ส่งตารางงาน/ขอแลกเวร, ดูสลิปเงินเดือน+ใบอนุญาตของตัวเอง — แก้ไข/อนุมัติของคนอื่นไม่ได้เลย
HR / admin / super_adminเมนู "จัดการบุคคล" ทั้งหมดเพิ่ม/แก้/ลบพนักงาน, จัดตารางกะ, อนุมัติตารางงาน/OT/แก้เวลา/การลา, ดูบันทึกเวลาทีม, ทะเบียนใบอนุญาตทีม, รันเงินเดือน, ออกเอกสาร WHT/50 ทวิ, ดูรายงาน HR
admin / super_admin เท่านั้นนโยบาย HR รายสาขาตั้งค่า Geofence/Wi-Fi + ข้อมูลผู้เสียภาษีของแต่ละสาขา (HR ธรรมดาเข้าไม่ได้)

สิทธิ์ละเอียดกว่านั้นคุมด้วย permission key ต่อฟีเจอร์ (เช่น hr.employee.manage, hr.shift.manage, hr.leave.approve, hr.ot.approve, hr.timecorrection.approve, hr.license.manage, hr.report.view, hr.settings.manage) — ถ้าเปิด flag ตรวจสิทธิ์แบบละเอียด ระบบเช็คสิทธิ์เหล่านี้แทนการเช็คแค่ role ตรงๆ แต่ผลลัพธ์ที่พนักงานเห็นเหมือนกัน

Anti-fraud (ทำซ้ำในหลายหน้า)ผู้อนุมัติอนุมัติคำขอของตัวเองไม่ได้ ไม่ว่าจะเป็นคำขอลา หรือคำขอแลกเวร — ระบบปฏิเสธที่เซิร์ฟเวอร์แม้ผู้ใช้จะมีสิทธิ์ผู้อนุมัติก็ตาม
อ้างอิงทุกเมนู

⚙️ ตั้งค่า/ระบบ, งานผู้ดูแล และงานพื้นฐานร่วม

หมวดนี้ครอบ 3 ส่วน: งานที่ทุกตำแหน่งต้องใช้ · เมนูตั้งค่า/ระบบ 7 หมวด · งานผู้ดูแล (Logs/ถังขยะ/Integrity)

ฉบับย่อของ "งานพื้นฐานร่วม" อยู่ที่หัวข้อ พื้นฐานร่วม (ทุกคนอ่าน) ในเมนูซ้าย — ที่นี่เป็นฉบับเต็มพร้อมหัวข้อตั้งค่า/แอดมิน ที่ไม่ได้อยู่ในฉบับย่อ

8.1 งานพื้นฐานร่วมทุกตำแหน่ง

8.1.1 เข้าสู่ระบบ

ที่อยู่ /login — กรอก Username และ Password แล้วกด Sign In (ระหว่างรอปุ่มขึ้น "Signing in...") ผิดพลาดขึ้นกล่องข้อความสีแดง หลัง login สำเร็จระบบดึงสิทธิ์ RBAC, โหมด My-Cases และรูปแบบเมนูตามตำแหน่งให้อัตโนมัติก่อนพาเข้าหน้าแรก — ไม่มีปุ่ม "ลืมรหัสผ่าน"

8.1.2 แถบด้านบน (ทุกหน้าหลัง login)

ส่วนประกอบอธิบาย
ปุ่มซ่อน/แสดงเมนูซ้ายไอคอนมุมซ้ายบน (desktop/iPad แนวนอนเท่านั้น) — จำค่าไว้ในเครื่อง
สลับสาขาdropdown "สาขา:" — แสดงเฉพาะหน้าหลังบ้าน มีตัวเลือก "ทุกสาขา" เฉพาะ admin/super_admin — เปลี่ยนสาขาแล้วข้อมูลค้างบนจอ (ตะกร้า/ตัวกรอง) ถูกล้างทันที คลินิกโหมดสาขาเดียว (mono) ไม่แสดงตัวเลือกนี้
ป้ายเครือข่ายคลินิกแสดงเฉพาะเมื่อจับคู่กับคลินิกอื่นแล้ว จุดเขียว=ปกติ, จุดเหลือง=รอยืนยัน/เชื่อมต่อไม่ได้
กระดิ่งแจ้งเตือนดูหัวข้อ 8.1.3
ป้ายตำแหน่งชื่อบทบาท (ผู้ดูแลระบบ/พนักงาน/หมอ/พยาบาล/ฝ่ายบุคคล/ลูกค้า) ต่อจากกระดิ่ง
ผู้ใช้ + ออกจากระบบมุมล่างสุดของเมนูซ้าย — รูปโปรไฟล์/อักษรย่อ, ชื่อ-นามสกุล, ป้ายตำแหน่ง, ปุ่มไอคอนประตูออก

8.1.3 กระดิ่งแจ้งเตือน (NotificationBell)

  • ตัวเลขวงกลมแดงมุมขวาบนกระดิ่ง = จำนวนยังไม่อ่าน (ดึงใหม่ทุก 60 วินาที และเมื่อกลับมาโฟกัสหน้าต่าง)
  • คลิกกระดิ่ง → dropdown 8 รายการล่าสุด คลิกรายการ = ทำเครื่องหมายอ่านแล้ว + พาไปหน้าที่เกี่ยวข้อง
  • ปุ่ม "อ่านทั้งหมด" มุมขวาบน (ปิดใช้งานเมื่อไม่มีรายการค้าง)
  • ปุ่ม "ดูทั้งหมด" ท้าย dropdown → พาไปหน้ารายการแจ้งเตือนแบบเต็ม — คนละหน้ากับ "การแจ้งเตือนของฉัน" (หน้าตั้งค่าว่าจะรับแจ้งเตือนเรื่องอะไรบ้าง — ดูหัวข้อ 8.3)
  • ไม่มีรายการเลย → ไอคอนกล่องเปล่า + "ยังไม่มีการแจ้งเตือน"

8.1.4 ปรับขนาดตัวอักษร

อยู่ที่หน้าแดชบอร์ด มุมขวาบนของหัวข้อ — ปุ่ม −/+ ปรับทีละ 5% (ช่วง 80–150%) หรือลากแถบเลื่อน, ปุ่ม "คืนค่าดั้งเดิม" กลับ 100% — มีผลทุกหน้าจอทันทีและจำค่าไว้ในเครื่อง

8.2 ตั้งค่า/ระบบ (7 หมวด)

เมนูซ้ายกลุ่ม "ตั้งค่า/ระบบ" มี 7 หมวด แต่ละหมวดเป็นhub: เห็นในเมนูก็ต่อเมื่อผู้ใช้เข้าถึงได้อย่างน้อย 1 แท็บย่อยของหมวดนั้น คลิกชื่อหมวดพาไปแท็บแรกที่เข้าถึงได้ ด้านในมีแถบแท็บสลับหน้าย่อย

หมวดที่มีป้าย "มีผลทั้งระบบ" = การตั้งค่าจากสาขาใดสาขาหนึ่งมีผลกับทุกสาขาพร้อมกัน (ไม่มีค่าตั้งแยกรายสาขา)

ตัวอย่างหน้าตา: เมนู 7 หมวดตั้งค่า (hub) + แท็บย่อยด้านใน
ข้อมูลคลินิก & การชำระเงิน วงเงินลูกค้า คลังสินค้า การรักษา (EMR) ต้นทุน & ค่าตอบแทน สิทธิ์ & การแจ้งเตือน เครือข่ายคลินิก
ข้อมูลคลินิก (หัวใบเสร็จ) ธนาคารรับชำระ Void PIN

แต่ละหมวด = hub (เห็นเมื่อเข้าถึงได้ ≥1 แท็บย่อย) · ป้าย "มีผลทั้งระบบ" = ตั้งจากสาขาไหนก็มีผลทุกสาขา

1) ข้อมูลคลินิก & การชำระเงิน มีผลทั้งระบบ

  • ข้อมูลคลินิก (หัวใบเสร็จ) — ชื่อร้าน/แบรนด์, ชื่อนิติบุคคล, เลขผู้เสียภาษี(10–13 หลัก), ที่อยู่, โทรศัพท์, รหัสสาขา, checkbox "จดทะเบียน VAT" (แสดงบรรทัดภาษีบนใบเสร็จ — เฉพาะการแสดงผล ไม่กระทบบัญชี), checkbox "นับบริการส่วนลด 100% (Case Review) เป็นยอดขาย" — มีตัวอย่างหัวใบเสร็จ (live preview) ใบเสร็จที่ออกไปแล้วจะไม่เปลี่ยนตามการแก้ไขภายหลัง
    • หัวข้อย่อย "รูปแบบวันที่และเวลา": เลือกปีที่แสดง(พ.ศ./ค.ศ.), รูปแบบวันที่(7 แบบ), เขตเวลา — เปลี่ยนปี/รูปแบบวันที่มีผลทันที แต่เปลี่ยนเขตเวลาต้อง restart เซิร์ฟเวอร์จึงมีผล
    • toggle "ใช้สิทธิ์แพ็คเกจก่อนชำระเงิน" (ค่าเริ่มต้นปิด) และ "ตัดสิทธิ์แพ็คเกจอัตโนมัติเมื่อขายในเคส" (ค่าเริ่มต้นปิด)
    • ตัวอย่างหน้าตา: แถบสวิตช์ toggle (ปิด/เปิด)
      ใช้สิทธิ์แพ็คเกจก่อนชำระเงิน ตัดสิทธิ์แพ็คเกจอัตโนมัติ
  • ธนาคารรับชำระ (บัตรเครดิต) — ตารางรหัส+ชื่อธนาคารที่แคชเชียร์เลือกได้ที่ POS เพิ่ม/ลบแถวได้ ปุ่ม "ใช้ค่าเริ่มต้น" รีเซ็ตกลับรายการมาตรฐาน
  • Void PIN — ตั้ง/เปลี่ยนรหัส PIN 4–8 หลักที่พนักงานต้องกรอกก่อนยกเลิกเคส มีป้ายสถานะ "ตั้งค่าแล้ว"/"ยังไม่ได้ตั้งค่า"

2) วงเงินลูกค้า

  • ชนิดวงเงินลูกค้า — CRUD ชนิดวงเงิน (เช่น วงเงิน VIP, วงเงินเลเซอร์): เลือกประเภท "วงเงินจริง" (คืนได้) หรือ "วงเงินแถม" (โบนัส คืนไม่ได้ จำกัดบริการได้) — ล็อกประเภทหลังสร้างแล้ว, ตั้งได้ว่าจ่ายบริการอะไรได้บ้าง (ทุกบริการ/เฉพาะบริการที่เลือก/เฉพาะหมวดหมู่ที่เลือก/ทุกบริการยกเว้นที่เลือก), นโยบายตัดเงิน (ตัดจริงก่อนเสมอ-ค่าเริ่มต้น / ตัดคู่จริง+แถมอัตโนมัติตามสัดส่วน pro-rata), นโยบายเมื่อครบกำหนด (ริบเข้ารายได้-ค่าเริ่มต้น / ต่ออายุอัตโนมัติ / ส่งให้ผู้ดูแลตัดสินใจเป็นรายก้อน) — ปิดใช้งานแบบ soft-delete เท่านั้น ไม่มีปุ่มลบถาวร
  • บัญชี & VAT วงเงิน — สำหรับนักบัญชีคลินิกตั้งเอง: ผังบัญชี(GL) ของหนี้สินวงเงินจริง/แถม/บัญชีค่าใช้จ่ายปรับปรุง/รายได้ปรับปรุง/โปรโมชัน, จังหวะรับรู้ VAT (ตอนใช้-ค่าเริ่มต้น / ตอนขาย), วิธีแสดงเงินแถมตอนใช้ (ลดฐาน VAT / รับรู้เต็มแล้วแยกค่าใช้จ่าย)
ตัวอย่างหน้าตา: สร้างชนิดวงเงิน (จริง/แถม — ล็อกหลังสร้าง) + นโยบายตัดเงิน
วงเงินจริง (คืนได้) วงเงินแถม (โบนัส · คืนไม่ได้)
นโยบายตัดเงินตัดจริงก่อนเสมอ
⚠ ประเภทล็อกหลังสร้าง · ปิดได้แบบ soft-delete เท่านั้น

จริง (คืนได้) vs แถม (โบนัส คืนไม่ได้ จำกัดบริการได้) · นโยบายครบกำหนด: ริบ/ต่ออายุ/ให้ผู้ดูแลตัดสิน

3) ตั้งค่าคลังสินค้า มีผลทั้งระบบ · เฉพาะ super-admin

  • โหมดคลังสินค้า — "คลังจริง" (ตัดสต็อกจริงตาม FEFO ทุกครั้ง บล็อกถ้าของไม่พอ) หรือ "คลังเสมือน" (บันทึกเป็น "รายงานเบิก" อย่างเดียว ไม่ตัดสต็อกจริง ไม่บล็อกแม้ของไม่พอ) มีผลทันทีกับรายการจ่าย/ขายครั้งถัดไป
  • ขายก่อนรับเข้า — 3 โหมด: "ปิด — ของไม่พอ ขายไม่ได้" (ค่าเริ่มต้น ปลอดภัยสุด) / "เตือนแล้วให้ผ่าน" / "ต้องมีสิทธิ์จึงยืนยันได้" (เฉพาะผู้ถือสิทธิ์ oversell) — ตั้งค่าระดับสาขาตัวเอง
ตัวอย่างหน้าตา: โหมดคลังสินค้า (คลังจริง/เสมือน) + โหมดขายก่อนรับเข้า
คลังจริง (FEFO + บล็อก) คลังเสมือน (รายงานเบิก)
ปิด — ขายไม่ได้ เตือนแล้วให้ผ่าน ต้องมีสิทธิ์

"มีผลทั้งระบบ · เฉพาะ super-admin" · คลังเสมือนไม่ตัดสต็อกจริง · ขายก่อนรับเข้าคุมความเข้ม 3 ระดับ

4) การรักษา (EMR)

  • ฟอร์มยินยอม (Consent) — จัดการเทมเพลตฟอร์มยินยอม แบ่งฟอร์มระบบกับฟอร์มของคลินิกเอง จัดกลุ่มตามหมวด (ทั่วไป/หัตถการ/ยาชา-ระงับความรู้สึก/ภาพถ่าย PDPA) แต่ละฟอร์มมีสถานะไล่ระดับ ฉบับร่าง → เผยแพร่แล้ว(แก้ไขไม่ได้อีก) → เลิกใช้ — สร้างใหม่/แก้ไข(builder ลากบล็อก)/โคลนเวอร์ชันใหม่/เผยแพร่/เลิกใช้/ผูก trigger — กรองตามสาขา
  • วินัยการปิดเคส — เตือน/บล็อกการมอบหมายเคสใหม่ให้พนักงานที่มีเคสค้างเกินกำหนด: เลือกโหมด(ปิด/เตือน/ห้าม), บทบาทที่ถูกตรวจ, นิยาม "ค้าง" (กี่วัน+ผ่อนผันถึงกี่โมงเช้า), "ผู้ปิดเคสของคลินิก" (ข้อความ popup), ข้อยกเว้นรายบทบาท/รายคน(พร้อมวันหมดอายุ)
ตัวอย่างหน้าตา: ฟอร์มยินยอม builder (บล็อก) + ป้ายสถานะ (ร่าง/เผยแพร่/เลิกใช้)
ฟอร์มยินยอมหัตถการฉบับร่าง
บล็อกข้อความ
บล็อกลายเซ็น
ฉบับร่าง เผยแพร่แล้ว เลิกใช้

builder ลากบล็อก · เผยแพร่แล้ว = แก้ไม่ได้ (โคลนเวอร์ชันใหม่แทน) · แบ่งหมวด ทั่วไป/หัตถการ/ยาชา/ภาพถ่าย PDPA

5) ต้นทุน & ค่าตอบแทน

กฎต้นทุนซ่อนเร้น — แท็บย่อย: "ค่ามือหมอ" (Doctor Fee), "ค่าคอมมิชชัน" (Commission — บล็อกไม่ให้ตั้งกับบทบาทหมอ), "ต้นทุนอื่น" (Overhead/Lab/Other) และ "คำนวนย้อนหลัง" (Recompute Profit — ซ่อนไปเลยถ้าไม่มีสิทธิ์ cost.recompute.run)

ตัวอย่างหน้าตา: กฎต้นทุนซ่อนเร้น — แท็บย่อย + การ์ดกฎค่ามือหมอ (%)
ค่ามือหมอ ค่าคอมมิชชัน ต้นทุนอื่น คำนวนย้อนหลัง

DF แพทย์ฟรีแลนซ์

เปอร์เซ็นต์ · หัก ภ.ง.ด.3 3%

20%

"คำนวนย้อนหลัง" ซ่อนถ้าไม่มีสิทธิ์ cost.recompute.run · ค่าคอมมิชชันตั้งกับบทบาทหมอไม่ได้ (ระบบบล็อก)

6) สิทธิ์ & การแจ้งเตือน

  • การแจ้งเตือน — รายการหัวข้อแจ้งเตือนทั้งหมด จัดกลุ่มตามโมดูล (เงิน/อนุมัติ/สต็อก/จอง/HR/CRM/ส่วนตัว) เปิด/ปิดรายหัวข้อ เลือกช่องทาง(ในแอป/LINE) ตั้ง threshold — ตั้งค่าระดับสาขาตัวเอง แบ่ง 3 ระดับ: "กันลืม" (พนักงานปิดเองได้), "ต้องทำ" (ขึ้นกระดิ่ง+LINE ทันที ค้างจนกว่าจะทำจริง), "ผิดปกติ/ด่วน" (ปิดไม่ได้ ถ้าไม่มีคนรับจะส่งต่อขึ้นไปตามลำดับ) — ตั้งบทบาทที่รับ escalation ได้
  • สิทธิ์การใช้งาน — ดูรายละเอียดเต็มด้านล่าง (8.2.1)

7) เครือข่ายคลินิก มีผลทั้งระบบ

  • การเชื่อมต่อ — จับคู่/ยกเลิกจับคู่กับคลินิกอื่นในเครือข่ายเดียวกัน (modal "จับคู่คลินิก") ดูสถานะซิงก์พนักงาน (roster mirror) ฝั่งคลินิกหลักมีปุ่ม "ซิงก์อีกครั้ง"
  • นโยบาย — เข้าได้เฉพาะเมื่อจับคู่สำเร็จแล้ว ตั้งนโยบายแชร์ข้อมูลคนไข้(ปิด/รวมยอด/ส่งต่อ), นโยบายสต็อก(ฝากขาย/consignment), โหมดพนักงาน(แยกกัน/มิเรอร์) — เปลี่ยนโหมดพนักงานมีผลทันที (เตือนให้ยืนยันก่อนเสมอ)

8.2.1 หน้า "สิทธิ์การใช้งาน" — เจาะลึก

ศูนย์กลางที่admin ใช้จัดการพนักงานมากที่สุดในหมวดตั้งค่า แบ่งเป็นสวิตช์หลัก 1 อัน + แท็บ 3 แท็บ

สวิตช์หลัก (บนสุด): "เปิดใช้งานระบบสิทธิ์การใช้งาน (RBAC)" — เปิด=บังคับสิทธิ์รายฟีเจอร์ตามที่ตั้งไว้ทันที · ปิด=กลับไปตรวจสิทธิ์ตามตำแหน่ง(role)แบบเดิม (การตั้งค่าสิทธิ์รายฟีเจอร์จะไม่ถูกบังคับใช้ชั่วคราว) — มีกล่องยืนยันก่อนสลับทุกครั้ง

แท็บ 1 · สิทธิ์รายพนักงาน (แท็บเริ่มต้น)

ซ้าย: รายชื่อพนักงานทั้งหมด (ค้นหาชื่อ/รหัส/ตำแหน่ง) — ขวา: เลือกพนักงาน 1 คน → เลือก Preset role → ตารางฟีเจอร์ทั้งหมดจัดกลุ่มตามโมดูล (พับ/กางได้) แต่ละแถวมีปุ่มสลับวน 3 สถานะ: สีเทา("จาก preset") → สีแดงอ่อน("ปิด — revoke override") → สีฟ้า("เปิดเพิ่ม — grant override") → กลับสีเทา — ฟีเจอร์ที่กระทบเงิน/ข้อมูลอ่อนไหวมีป้าย "sensitive"

ตัวอย่างหน้าตา: ปุ่มสลับ 3 สถานะสิทธิ์ + ป้าย "sensitive"
จาก preset ปิด — revoke เปิดเพิ่ม — grant sensitive

ปุ่ม "รีเซ็ตเป็น preset" ล้าง override ทั้งหมด · ปุ่ม "บันทึก" (เปิดใช้งานเมื่อมีการแก้ไขค้างอยู่) — สูตรสิทธิ์จริงที่ใช้งาน = (สิทธิ์จาก preset ∪ ที่เปิดเพิ่ม) − ที่ปิดไว้

แท็บ 2 · สิทธิ์ตาม Role

แก้ไข "ตัวบทบาท" เอง (ไม่ใช่แก้รายคน) + เพิ่ม/ลบบทบาทของคลินิกได้เอง — ซ้าย: รายชื่อบทบาททั้งหมด (ป้าย "ระบบ"/"คลินิก", ป้าย "แก้แล้ว" ถ้าถูกปรับ, จำนวนพนักงานที่ใช้, ป้ายเหลือง "ต้องอัปเดต N") — ปุ่ม "เพิ่มบทบาท": ตั้งรหัส+ชื่อที่แสดง → เริ่มต้นแบบ "ไม่มีสิทธิ์ใดๆ" และไม่ได้รับฟีเจอร์ใหม่ในอนาคตโดยอัตโนมัติเหมือนบทบาทระบบ

ขวา: ตารางติ๊กสิทธิ์ตามโมดูล ค้นหาสิทธิ์ได้ บทบาทระบบมีตัวกรอง "แสดงเฉพาะที่ต่างจากค่าเริ่มต้น" — ปุ่ม "คืนค่าเริ่มต้น" (บทบาทระบบที่ถูกแก้แล้ว) และ "ลบบทบาท" (บทบาทคลินิก — มีพนักงานใช้อยู่ต้องเลือกบทบาทปลายทางย้ายคนไปก่อน)

กับดักที่ admin ต้องรู้แก้บทบาทแล้ว ไม่ย้อนไปหาพนักงานที่ถูกกำหนดสิทธิ์รายคนไว้แล้วโดยอัตโนมัติ — พนักงานที่ยังไม่เคยถูกตั้งสิทธิ์รายคนจะได้รับผลทันที ส่วนคนที่มี "สิทธิ์แช่แข็ง" ต้องกดปุ่ม "ใช้กับพนักงานที่มีอยู่" ทุกครั้งหลังบันทึก ไม่งั้นจะเหมือนแก้แล้วไม่มีอะไรเกิดขึ้นจริง — ระบบเด้งกล่องถามยืนยันให้อัตโนมัติทันทีหลังบันทึกถ้ามีพนักงานค้างอยู่

ในแท็บนี้มีส่วนต่อท้าย "การมองเห็นเคส (My-Cases)": ตารางกำหนดว่าแต่ละบทบาทเห็น "เห็นทั้งหมด" (ทุกเคสในสาขา) หรือ "เฉพาะเคสของตัวเอง" (รายการเคส/เคสรอปิด/มัดจำค้าง — ประวัติการรักษารายคนไข้ไม่ถูกจำกัดด้วยกฎนี้) — admin/super_admin เห็นทั้งหมดเสมอ ตั้งเป็นอย่างอื่นไม่ได้ (กันล็อกตัวเอง) ยกเว้นรายบุคคลทำได้โดยเปิดสิทธิ์ emr.cases.view_all ให้คนนั้นในแท็บ 1 — ปุ่ม "กลับค่าเริ่มต้นระบบ" ล้างนโยบายทั้งหมด

แท็บ 3 · การอนุมัติ

ส่วนที่ 1 "ผู้มีสิทธิ์อนุมัติ": กำหนดว่าตำแหน่งใดอนุมัติงานประเภทใดได้บ้าง — ตำแหน่งเริ่มต้นของระบบ (ป้ายเทา ไอคอนกุญแจ) ถอดออกไม่ได้ เพื่อกันตั้งค่าผิดจนไม่มีใครอนุมัติได้เลย เพิ่มตำแหน่งอนุมัติเสริมได้ (ป้ายฟ้า) — แก้ไขได้เฉพาะ admin/super_admin บัญชีอื่นดูได้อย่างเดียว ปุ่ม "บันทึกผู้อนุมัติ" มีผลทันทีทั้งระบบ

ส่วนที่ 2 "การอนุมัติการกระทำอ่อนไหว": ตารางการกระทำที่กระทบเงิน/สต็อก (แปลงแพ็คเกจเป็นเครดิต, แก้ไขหลังปิดเคส/บิลที่ชำระแล้ว, ยกเลิกเคสที่ปิดแล้ว, แทนที่แพ็คเกจ, โอนสิทธิ์/โอนเคส) แต่ละแถวมี toggle 2 อัน: "ใส่ PIN" และ "ขออนุมัติ" — "ขออนุมัติ" บันทึกค่าไว้ได้ แต่ระบบอนุมัติแบบ pending-change ยังไม่เปิดใช้งานจริง (ตอนนี้มีผลบังคับเฉพาะ PIN เท่านั้น)

ตัวอย่างหน้าตา: ตารางการกระทำอ่อนไหว — toggle "ใส่ PIN" / "ขออนุมัติ" ต่อแถว
การกระทำใส่ PINขออนุมัติ
ยกเลิกเคสที่ปิดแล้ว
แปลงแพ็คเกจเป็นเครดิต

มีผลบังคับจริงเฉพาะ "ใส่ PIN" · "ขออนุมัติ" (pending-change) บันทึกได้แต่ยังไม่เปิดใช้จริง

8.3 งานผู้ดูแล

อยู่ในกลุ่มเมนู "ตั้งค่า/ระบบ" ท้ายสุด (คนละหมวดกับ 7 hub ด้านบน) — 3 รายการแรกเกตด้วยสิทธิ์ audit.log.view (หรือ role admin/super_admin/manager/accounting/view_all)

  • ประวัติกิจกรรม (Logs) — ตาราง "บันทึกกิจกรรมระบบ (Activity Logs)" บันทึกทุกการเปลี่ยนแปลงข้อมูลและเหตุการณ์สำคัญ กรองตามหมวดปฏิบัติการ, พนักงานผู้ทำ, ช่วงวันที่(ค่าเริ่มต้นแสดงเฉพาะวันนี้เท่านั้น กันโหลดหนัก), สถานะสาธารณะ(isPublic) — คลิกแถวดูรายละเอียด และดู "เหตุการณ์เดียวทั้งสาย" (กลุ่มตาม requestId — เห็นทุก log ที่เกิดจาก action เดียวกัน)
  • ถังขยะ (Trash) — รวมทุกข้อมูลที่ถูกลบแบบ soft-delete จากทุกโมดูล มีชิปตัวกรองตามชนิดข้อมูล กู้คืนได้ภายใน90 วัน(พ้นกำหนดถูกลบถาวรอัตโนมัติ) — กู้คืนอาจชนกับข้อมูลที่ถูกสร้างซ้ำภายหลัง(unique-key) ระบบแจ้งเตือนขัดแย้งแทนการกู้คืนเงียบๆ
  • ตรวจสอบข้อมูล (Integrity) — รายการความผิดปกติเงิน↔สต็อก และ event ที่หายไป ตรวจจับอัตโนมัติโดยระบบ (detector) แสดงตัวเลขสรุปตามระดับความรุนแรง(critical/high/medium/low) กรองตามสถานะ(เปิดอยู่/รับทราบแล้ว/แก้ไขแล้ว/ทั้งหมด) ปุ่ม "ตรวจสอบเดี๋ยวนี้" สั่งรันตรวจซ้ำได้ทันที (report-only เท่านั้น ไม่แก้ไขข้อมูลอัตโนมัติ)
  • การแจ้งเตือนของฉันself-service ของทุกคน ไม่ใช่แค่ admin (ไม่มีเกตสิทธิ์นอกจากล็อกอิน) ตั้งค่าส่วนตัวว่าจะรับแจ้งเตือนหัวข้อไหนบ้าง: ปิดเสียง(mute)ได้เฉพาะระดับ "กันลืม" เท่านั้น — ระดับ "ต้องทำ" และ "ผิดปกติ/ด่วน" ปุ่มปิดเสียงเป็นสีเทากดไม่ได้ (เซิร์ฟเวอร์ไม่ยอมให้ mute สองระดับนี้) — ปิดแจ้งเตือนผ่าน LINE ได้ (ไม่กระทบกระดิ่งในแอป) และตั้งช่วงเวลาห้ามรบกวน (quiet hours) ได้ — เลื่อนเฉพาะแจ้งเตือนที่ส่งไปมือถือ กระดิ่งในแอปยังคงมีให้เห็นเสมอ
ตัวอย่างหน้าตา: งานผู้ดูแล — ถังขยะ (กู้คืน 90 วัน) + Integrity ระดับความรุนแรง

สมหญิง ใจดี ลูกค้า

ลบเมื่อ 20 ก.ค. · เหลือ 88 วัน

กู้คืน
critical 2 high 5 low 3

ถังขยะกู้คืนได้ 90 วัน · Integrity report-only ไล่ critical/high ก่อน · Logs กรองค่าเริ่มต้น "วันนี้" (กันโหลดหนัก)

คู่มือนี้อ้างอิงจากหน้าจอจริงในระบบ AirClinic ERP ณ วันที่จัดทำเอกสาร — ชื่อเมนู/ปุ่ม/ข้อความอาจมีการปรับปรุงเพิ่มเติมตามเวอร์ชันระบบ
⚙️ ตั้งค่า

วิธีตั้งผู้อนุมัติส่วนลด / การขออนุมัติ

เข้าจากไหนตั้งค่า → นโยบายการอนุมัติ (admin)
1
เปิดนโยบาย "ต้องขออนุมัติ" ของรายการที่ต้องการ (เช่น การเปลี่ยนผู้ขาย, ส่วนลดพิเศษ)
2
กำหนดผู้มีสิทธิ์อนุมัติ (บทบาท admin/super_admin)
3
หลังเปิด: พนักงานทำรายการนั้นได้ตามปกติ แต่รายการจะ "รออนุมัติ" ก่อนมีผล
4
ผู้อนุมัติเห็นคำขอที่เมนูอนุมัติ — ตัวเลขสีส้มบนแท็บคือจำนวนที่รออนุมัติ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตั้งผู้อนุมัติส่วนลด / การขออนุมัติ

ผู้มีสิทธิ์อนุมัติ

ตำแหน่งใดอนุมัติงานประเภทใดได้บ้าง

ค่าเริ่มต้นของระบบ (ถอดออกไม่ได้)

เจ้าของระบบ (admin) ผู้ดูแลสูงสุด (super_admin)

อนุญาตเพิ่มเติม

ผู้จัดการสาขา
พนักงานที่มีสิทธิ์ rbac.permission.manage เปลี่ยนได้ทันทีโดยไม่ต้องส่งคำขอ
⚙️ ตั้งค่า

วิธีเปิดฟีเจอร์แก้ไขราคา (แก้ราคาแมนนวล)

เข้าจากไหนตั้งค่า → ระบบขาย (admin)
1
เปิดสวิตช์อนุญาต "แก้ไขราคาแมนนวล" ที่ตั้งค่าระบบขาย
2
หลังเปิด: ในตะกร้า POS แต่ละรายการจะมีปุ่มแก้ไขราคา
3
ตอนแก้ ระบบบังคับกรอก "ราคาใหม่ (บาท)" และเหตุผลเสมอ
4
ราคาหลัก (ราคาตั้ง) ยังแสดงกำกับไว้ — รายงานแยกให้เห็นว่าบิลไหนแก้ราคา
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เปิดฟีเจอร์แก้ไขราคา (แก้ราคาแมนนวล)

แก้ไขราคาแมนนวล

โบท็อกซ์ 50u

ราคาหลัก: ฿9,900

ราคาใหม่ (บาท)

0.00

เหตุผล *

เช่น โปรโมชั่น, ส่วนลดลูกค้าประจำ, ปรับตามตกลง
ยกเลิก บันทึกราคา
ปุ่มแก้ราคาจะแสดงเฉพาะผู้ที่มีสิทธิ์ — ถ้าพนักงานทั่วไปเห็น ให้ตรวจการตั้งค่าสิทธิ์
⚙️ ตั้งค่า

วิธีจัดการกลุ่มพนักงาน / สิทธิ์รายบุคคล (RBAC)

เข้าจากไหนตั้งค่า → ผู้ใช้และสิทธิ์ (admin)
1
เลือกพนักงาน → กำหนดบทบาท (doctor / nurse / receptionist / cashier / sale / admin ฯลฯ)
2
บทบาทกำหนดเมนูที่เห็นและปุ่มที่กดได้ทั้งระบบ
3
สิทธิ์พิเศษรายคน (feature key) เพิ่ม/ถอดได้โดยไม่ต้องเปลี่ยนบทบาท
4
ทดสอบโดยให้พนักงานล็อกอินใหม่ — สิทธิ์มีผลตอนเข้าสู่ระบบ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: จัดการกลุ่มพนักงาน / สิทธิ์รายบุคคล (RBAC)

ตั้งค่า › สิทธิ์ & การแจ้งเตือน › สิทธิ์การใช้งาน

บทบาททั้งหมด

แพทย์ (doctor)
แคชเชียร์ (cashier)
แอดมิน (admin)

เลือกบทบาทจากรายการทางซ้ายเพื่อแก้ไขสิทธิ์

อย่า gate งานด้วยชื่อบทบาทตรง ๆ — ระบบใช้สิทธิ์ (permission) เป็นตัวตัดสินเสมอ
⚙️ ตั้งค่า

วิธีเพิ่มห้องตรวจ / ห้องทำหัตถการ

เข้าจากไหนตั้งค่า → ห้อง (admin)
1
กด "เพิ่มห้อง" → ตั้งชื่อห้อง (เช่น ห้อง 1, ห้อง Laser)
2
ห้องที่เพิ่มจะไปเป็นตัวเลือกตอนจองนัดและตอนเปิดเคส
3
ปิดการใช้งานห้องได้เมื่อเลิกใช้ — ประวัติเก่าที่อ้างห้องนั้นยังอยู่ครบ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เพิ่มห้องตรวจ / ห้องทำหัตถการ

⚙ ตั้งค่าตารางเวลา

เวลาทำการ · วันหยุด · ช่วงเวลาที่ปิด · ความจุห้อง (มีผลกับช่วงเวลาว่างในการจอง)

🕐 เวลาทำการ วันหยุด 🚪 ความจุห้อง

ความจุห้อง (จำนวนคนที่รับได้พร้อมกันต่อช่วงเวลา)

ห้องตรวจ 1 (exam) 1 💾 บันทึก
ห้อง Laser (procedure) 2
⚙️ ตั้งค่า

วิธีตั้งเลขรันเอกสารอัตโนมัติ

เข้าจากไหนตั้งค่า → เลขที่เอกสาร (admin)
1
กำหนดรูปแบบเลขรันของเอกสารแต่ละชนิด (ใบเสร็จ, เคส, GR)
2
ระบบรันเลขให้อัตโนมัติ ไม่ซ้ำ แม้กดพร้อมกันหลายเครื่อง
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตั้งเลขรันเอกสารอัตโนมัติ

รูปแบบเลขที่เอกสาร (แยกตามสาขา) ไม่มีผลทันที

ใบเสร็จรับเงิน R-{YY}{MM}-{####}
ใบกำกับภาษี TX-{YY}-{#####}
อย่าแก้เลขรันย้อนหลังกลางปี — เลขที่ออกไปแล้วจะไม่ถูกจัดเรียงใหม่
⚙️ ตั้งค่า

วิธีตั้งที่อยู่ใบกำกับภาษีของคลินิก

เข้าจากไหนตั้งค่า → ข้อมูลคลินิก (admin)
1
กรอกชื่อนิติบุคคล เลขผู้เสียภาษี และที่อยู่ใบกำกับภาษี
2
ข้อมูลนี้ไปปรากฏบนเอกสารภาษีที่ออกจากระบบ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตั้งที่อยู่ใบกำกับภาษีของคลินิก

ข้อมูลคลินิก (หัวใบเสร็จ)

ชื่อร้าน/แบรนด์ (บรรทัดหัวใบเสร็จ)

ชื่อนิติบุคคล (ตามจดทะเบียน)

เลขผู้เสียภาษี

ต้องเป็นตัวเลข 10–13 หลัก (หรือเว้นว่าง)

ตัวอย่างหัวใบเสร็จ

คลินิกตัวอย่าง
ใบเสร็จรับเงิน
ตัวอย่างรายการ x1   ฿0.00
⚙️ ตั้งค่า

วิธีตั้งค่า Recall — ตามลูกค้าคอร์สใกล้หมด/ครบกำหนด

เข้าจากไหนลูกค้า → มุมมองติดตาม (สิทธิ์ฝ่ายขาย)
1
เปิดมุมมองลูกค้าที่ "คอร์สใกล้หมดอายุ" หรือครบกำหนดกลับมาทำ
2
ตั้งช่วงวัน (เช่น หมดอายุใน 30 วัน) แล้วดูรายชื่อที่เข้าเงื่อนไข
3
ใช้รายชื่อนี้โทร/ส่งข้อความตามลูกค้า — บันทึกผลการติดต่อไว้ที่โปรไฟล์ลูกค้า
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตั้งค่า Recall — ตามลูกค้าคอร์สใกล้หมด/ครบกำหนด

ลูกค้า › วงเงิน/คอร์สใกล้หมดอายุ

🕐 จำนวนวงเงินใกล้หมดอายุ

6 วงเงิน

⚠ หมดอายุแล้ว (ยอดถูกระงับ)

2 วงเงิน · ฿1,800

🛒 มูลค่าใกล้หมดอายุรวม

฿24,500

👤 มูลค่ารวมก่อน VAT

฿22,897

👤 จำนวนลูกค้า

4 ราย

ค้นหาชื่อลูกค้า / HN / Lot
🔍
กรองช่วงวันหมดอายุ: ภายใน 30 วัน
🧾 ขายหน้าร้าน (POS)

วิธีเปิดเคส + ขาย + เก็บเงิน จบในหน้าเดียว

เข้าจากไหนงานประจำวัน → ขายหน้าร้าน (POS) → แท็บ "สร้างเคส + ขาย"
1
เลือกสาขา (ถ้าระบบขึ้น "กรุณาเลือกสาขาก่อนเริ่ม")
2
ค้นหาลูกค้าด้วยชื่อ / เบอร์ / HN แล้วเลือกจากรายการ
3
ระบุผู้ให้บริการ (จำเป็นเมื่อรายการมีค่ามือแพทย์ — หรือข้ามไปใส่ที่ EMR ทีหลัง)
4
กดการ์ดบริการ/สินค้า → รายการเข้าตะกร้า "รายการขาย" ทางขวา ยอดรวมอัปเดตทันที
5
กดปุ่ม "ชำระเงิน" — หน้าต่างชำระเงินเปิดทับจอ พร้อมแถบขั้นตอน เลือกลูกค้า → รับชำระ → สำเร็จ
6
เลือกช่องทาง (เงินสด/โอน/บัตร/QR) แล้วกด "ยืนยันการชำระเงิน"
7
ใบเสร็จออกทันที — เคสถูกเปิดและปิดพร้อมกันในขั้นนี้
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ขายหนึ่งบิลตั้งแต่ต้นจนใบเสร็จออก
สร้างเคส + ขาย เคสรอปิด 3 เคสมัดจำ 1 พักบิล 2
ลูกค้าค้นหาชื่อ / เบอร์ / HN…
ผู้ให้บริการ— ยังไม่ระบุ —
ฉีดวิตามินผิว฿1,500 ทรีตเมนต์หน้าใส฿2,200
รายการขาย
ยังไม่มีรายการ
รวมทั้งสิ้น ฿0
ชำระเงิน

เวชภัณฑ์ที่ใช้ในหัตถการ (เข็ม สำลี ยาชา) ถูกตัดสต็อกและลงต้นทุนให้อัตโนมัติ แต่ ไม่ขึ้นบนใบเสร็จลูกค้า — ของแถมที่ตั้งราคา ฿0 ต่างออกไป คือขึ้นบนใบเสร็จ

ไม่มีปุ่ม "เปิดเคส" แยก — การเปิดเคสกับรับเงินรวมอยู่ในปุ่ม "ชำระเงิน" ปุ่มเดียว

ดูรายละเอียดเต็มของหน้าจอนี้ →

🧾 ขายหน้าร้าน (POS)

วิธีสแกนบัตรประชาชนเปิดลูกค้าใหม่

เข้าจากไหนPOS → สร้างเคส + ขาย → สแกนบัตรประชาชน
1
เสียบบัตรลูกค้าเข้าเครื่องอ่าน แล้วกดสแกน (รองรับ Chrome/Edge — ไม่รองรับ Safari)
2
พบในระบบ: ระบบผูกลูกค้าให้ทันที ขึ้นข้อความเขียวพร้อมชื่อและ HN
3
ไม่พบ: ระบบเปิดฟอร์มสร้างลูกค้าใหม่ กรอกข้อมูลจากบัตรให้อัตโนมัติ
4
อ่านบัตรไม่ติด: ขึ้นข้อความแดง — เสียบบัตรให้แน่นแล้วกด "ลองสแกนใหม่"
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: สแกนบัตรประชาชนเปิดลูกค้าใหม่

🔍 ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *

กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร)
🔍
▭ สแกนบัตรประชาชน 📷 ถ่ายรูป/อัปโหลดบัตร
💳 ถ้าสแกนผ่านเครื่องอ่าน USB โดยตรงไม่ได้ (แท็บเล็ต Android) ให้ใช้แอป Companion — ตั้งค่าเครื่องอ่านบัตร
🧾 ขายหน้าร้าน (POS)

วิธีเลือกผู้ขาย (Sale) และขอเปลี่ยนผู้ขาย

เข้าจากไหนPOS → ตะกร้า → ดรอปดาวน์ "ผู้ขาย (Sale)"
1
ค่าเริ่มต้นคือคนที่ล็อกอิน — เปลี่ยนได้จากดรอปดาวน์
2
ถ้าคลินิกเปิดนโยบายอนุมัติ: การเปลี่ยนจะ "ส่งคำขอ" และรออนุมัติ (มีผลเมื่ออนุมัติแล้ว)
3
ระบบตรวจผลให้อัตโนมัติ ไม่ต้องรีเฟรช — อนุมัติแล้วขึ้นแจ้งเตือนสีเขียว
4
ผู้มีสิทธิ์ rbac.permission.manage เปลี่ยนได้ทันทีไม่ต้องส่งคำขอ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เลือกผู้ขาย (Sale) และขอเปลี่ยนผู้ขาย

💲ผู้ขาย (Sale) ค่าเริ่มต้น = ผู้เข้าสู่ระบบ

แคชเชียร์ A (ฉัน)
ผู้ขายคือคนที่ได้เครดิตยอดขายของบิле — คนละอย่างกับ "ผู้ทำ" ซึ่งใช้คิดค่ามือ
🧾 ขายหน้าร้าน (POS)

วิธีให้ส่วนลดรายการ vs ส่วนลดทั้งบิล

เข้าจากไหนPOS → ตะกร้า
1
ส่วนลดรายการ: ใส่ที่แถวสินค้า/บริการนั้น — ใช้เมื่อลดเฉพาะบางรายการ
2
ส่วนลดทั้งบิล: ใส่ท้ายตะกร้าก่อนกดชำระเงิน — ใช้เมื่อลดรวมทั้งใบ
3
สองแบบแยกกันในรายงาน อย่าใช้สลับกัน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ให้ส่วนลดรายการ vs ส่วนลดทั้งบิล

ชำระเงิน — ขั้น 2/3: ส่วนลด & โปรโมชั่น

มีรหัสคูปอง?

+ สร้างคูปองส่วนลด
กรอกรหัสคูปอง
ใช้คูปอง

รายการที่เลือก

ทรีตเมนต์หน้าใส × 1 ฿1,500
ฉีดวิตามินผิว × 1 ฿1,500
ยอดรวม฿3,000.00
ยอดสุทธิ฿3,000.00
เอาส่วนลดทั้งบิลไปใส่ที่รายการ = รายงานยอดขายรายบริการเพี้ยน และค่ามือหมอที่คิดจากยอดจริงเพี้ยนตาม
🧾 ขายหน้าร้าน (POS)

วิธีคิดค่าธรรมเนียมบัตร (3% / 5% / กำหนดเอง)

เข้าจากไหนPOS → ตะกร้า → อัตราค่าธรรมเนียม
1
เลือกอัตราจากดรอปดาวน์: ไม่คิด (0%) / 3% / 5% / 7% / 10% / กำหนดเอง
2
แถวสรุปยอดแสดงค่าธรรมเนียมแยกบรรทัด และรวมเข้ายอดสุทธิ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: คิดค่าธรรมเนียมบัตร (3% / 5% / กำหนดเอง)

อัตราค่าธรรมเนียม

ไม่คิดค่าธรรมเนียม (0%)
ยอดรวม฿5,999.00
ยอดสุทธิ฿5,999.00
นี่คือค่าธรรมเนียมบัตร ไม่ใช่ภาษี — ใช้เมื่อคลินิกผลักภาระค่ารูดบัตรให้ลูกค้า
🧾 ขายหน้าร้าน (POS)

วิธีรับชำระเต็มจำนวน / บางส่วน / เข้ารับบริการก่อน

เข้าจากไหนPOS → ชำระเงิน → รูปแบบการชำระ
1
ชำระเต็มจำนวน: เก็บครบจบเลย — ปุ่มยืนยันคือ "ยืนยันการชำระเงิน"
2
ชำระบางส่วน: กรอก "ยอดที่ชำระตอนนี้" — ระบบคำนวณส่วนที่เหลือไปแท็บ "เคสรอปิด" · ปุ่มเปลี่ยนเป็น "ยืนยันชำระบางส่วน"
3
เข้ารับบริการก่อน (ยังไม่ชำระ): ไม่เก็บเงินตอนนี้ ยอดทั้งบิลไปเป็นยอดค้างชำระ
4
สังเกตปุ่มยืนยันด้านล่าง — ข้อความบนปุ่มเปลี่ยนตามโหมดเสมอ ใช้เช็คว่าเลือกโหมดถูก
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: รับชำระเต็มจำนวน / บางส่วน / เข้ารับบริการก่อน

รูปแบบการชำระ

✓ ชำระเต็มจำนวน รับชำระทั้งบิลตอนนี้
% ชำระบางส่วน จ่ายบางส่วน เหลือไปเคสรอชำระ
👣 เข้ารับบริการก่อน ยังไม่ชำระ — ไปเคสรอชำระ
🪙 มัดจำ รับมัดจำ เหลือไปเคสรอชำระ
ยืนยันการชำระเงิน

ดูรายละเอียดเต็มของหน้าจอนี้ →

🧾 ขายหน้าร้าน (POS)

วิธีรับมัดจำ

เข้าจากไหนPOS → ชำระเงิน → รูปแบบการชำระ → มัดจำ
1
เลือก "มัดจำ" — ปุ่มยืนยันด้านล่างเปลี่ยนเป็น "ยืนยันรับมัดจำ"
2
กรอก "ยอดมัดจำที่รับตอนนี้" — ต้องน้อยกว่ายอดบิลเสมอ (เท่ายอดบิล = ระบบเตือนให้ใช้ชำระเต็มจำนวนแทน)
3
ยืนยัน → ออกใบเสร็จมัดจำ และเคสไปรอที่แท็บ "เคสมัดจำ" (ป้ายเขียว)
4
วันที่ลูกค้ามาทำจริง: เปิดจากแท็บเคสมัดจำ แล้วเก็บส่วนที่เหลือ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: รับมัดจำ ฿500 จากบิล ฿3,000 — ที่เหลือไปเคสรอปิด
รูปแบบการชำระ
ชำระเต็มจำนวน ชำระบางส่วน เข้ารับบริการก่อนยังไม่ชำระ — ไปเคสรอชำระ มัดจำรับมัดจำ เหลือไปเคสรอชำระ
ยอดบิลทั้งหมด฿3,000
ยอดสุทธิที่ต้องจ่าย:฿3,000
ยืนยันการชำระเงิน

มัดจำ ≠ ชำระบางส่วน — มัดจำคือเงินที่ยังไม่ถือเป็นรายได้จนกว่าลูกค้าจะมารับบริการ ระบบแยกสองอย่างนี้ในรายงานการเงิน อย่าใช้สลับกัน

มัดจำ ≠ ชำระบางส่วน — มัดจำเป็นเงินรับล่วงหน้า ยังไม่ถือเป็นรายได้จนกว่าลูกค้าจะมารับบริการ รายงานการเงินแยกสองอย่างนี้
🧾 ขายหน้าร้าน (POS)

วิธีรับเงินหลายช่องทางในบิลเดียว (แบ่งจ่าย)

เข้าจากไหนPOS → ชำระเงิน
1
ใส่ช่องทางแรกพร้อมจำนวน แล้วกดเพิ่มช่องทางถัดไป
2
ใส่จนยอดคงเหลือเป็น ฿0 — ก่อนครบระบบไม่ให้ยืนยัน
3
แต่ละช่องทางบันทึกแยกกันในรายงาน (เงินสด/โอน/บัตร/QR ลงคนละยอด)
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: รับเงินหลายช่องทางในบิลเดียว (แบ่งจ่าย)

💳 เลือกช่องทางการชำระเงิน

ยอดสุทธิที่ต้องจ่าย:฿3,000.00
จัดสรรยอดเงินแล้ว:฿0.00
* ยังไม่ครบถ้วน ต่างกันอยู่: ฿3,000.00

แตะเพื่อเลือกช่องทาง (เลือกได้หลายช่องทาง · แบ่งจ่ายหลายใบต่อช่องทางได้)

🔲QR พร้อมเพย์
💳บัตรเครดิต (เต็ม/ผ่อน)
💵เงินสด
➡️เงินโอน
👛 ใช้กระเป๋าเงินสมาชิก แตะเพื่อชำระจากยอดเงินสะสมของลูกค้า ยอดคงเหลือ฿1,250.00
💵 เงินสด 1,000.00
โหมดละเอียด (หลายรายการ/หลายสลิป) แยกช่องทางชำระเป็นหลายบรรทัด พร้อมเลขอ้างอิง/สลิปต่อบรรทัด — เช่น โอน 2 สลิป หรือ มัดจำ ฿100 + QR ฿2,899
🧾 ขายหน้าร้าน (POS)

วิธีรับเงินโอน + แนบสลิป

เข้าจากไหนPOS → ชำระเงิน → โอน
1
เลือกช่องทาง "โอน" แล้วแนบรูปสลิปก่อนกดยืนยัน
2
เงินโอนเข้าบัญชีคลินิกตรง: ติ๊ก "รับโอนตรงเข้าบัญชีคลินิก (แนบสลิป)"
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: รับเงินโอน + แนบสลิป
🔲QR พร้อมเพย์
💳บัตรเครดิต
💵เงินสด
➡️เงินโอน
ไม่มีสลิป = ตรวจสอบย้อนหลังไม่ได้ว่าเงินก้อนไหนเป็นของบิลไหน
🧾 ขายหน้าร้าน (POS)

วิธีพักบิล แล้วกลับมาทำต่อ

เข้าจากไหนPOS → หน้าต่างชำระเงิน → "พักบิล (เก็บไว้ทำต่อทีหลัง)"
1
กด "พักบิล (เก็บไว้ทำต่อทีหลัง)" ในหน้าต่างชำระเงิน
2
ใส่หมายเหตุ (ไม่บังคับ แต่ควรใส่ — คนมารับช่วงต่อจะได้รู้ว่าค้างเพราะอะไร) แล้วกด "พักบิลไว้"
3
บิลไปรออยู่แท็บ "พักบิล" — เงินที่กดชำระผ่านเครื่องไปแล้วบางส่วนไม่หาย
4
กลับมาทำต่อ: เปิดแท็บพักบิล กด "ทำต่อ" ที่การ์ดบิลนั้น
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ลูกค้าต้องออกไปกลางคัน — พักบิลไว้ แล้วกลับมาทำต่อ
ชำระเงิน — ฿3,000
VI-2608-0051
รับมาแล้ว (บัตรเครดิต)฿1,000
คงเหลือ฿2,000
พักบิล (เก็บไว้ทำต่อทีหลัง)

แท็บพักบิลที่มีจุดสีส้มแปลว่ามีเงินจริงที่รับมาแล้วค้างอยู่ — ควรเคลียร์ให้จบภายในวัน ไม่งั้นยอดปิดร้านจะไม่ตรงกับเงินในลิ้นชัก

จุดสีส้มบนแท็บ = มีเงินจริงที่รับมาแล้วค้างอยู่ — เคลียร์ให้จบภายในวัน ไม่งั้นยอดปิดร้านไม่ตรงลิ้นชัก
🧾 ขายหน้าร้าน (POS)

วิธีตามเก็บเงินเคสค้างชำระ (เคสรอปิด)

เข้าจากไหนPOS → แท็บ "เคสรอปิด"
1
ตัวเลขสีแดงบนแท็บ = จำนวนเคสที่ยังค้าง
2
การ์ดแต่ละใบแสดงยอดค้างชำระตัวใหญ่ และป้ายอายุ (เช่น ค้าง 1 วัน)
3
กดการ์ด → เข้าหน้าชำระเงินของเคสนั้น เก็บส่วนที่เหลือได้เลย
4
เคสที่จ่ายครบแต่ยังไม่ปิด: กดปิดเคสจากหน้าเดียวกัน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตามเก็บเงินเคสค้างชำระ (เคสรอปิด)

🗒 เคสรอปิด

ทั้งหมด มัดจำค้าง 1 รีเฟรชรายการ

โบท็อกซ์ 50u, ทรีตเมนต์หน้าใส

#VI-2608-0042 🕐 4 ส.ค. 2569 · 15:20 ค้าง 1 วัน มัดจำ ฿500
ชำระบางส่วน

ลูกค้าตัวอย่าง

OPD: 0001

ผู้ให้บริการ: พญ. ตัวอย่าง

โบท็อกซ์ 50u x1฿4,900
ทรีตเมนต์หน้าใส x1฿1,500

ยอดค้างชำระ

฿5,900

ชำระแล้ว ฿500 / รวม ฿6,400

☑ ปิดเคส ↺ ยกเลิก +
🎟️ คอร์ส & สิทธิ์

วิธีตัดใช้สิทธิ์คอร์ส (Redeem — ไม่คิดเงิน)

เข้าจากไหนPOS → เลือกลูกค้า → กล่อง "สิทธิ์แพ็คเกจของลูกค้า"
1
เลือกลูกค้าก่อน — กล่องสิทธิ์จะแสดงทุกแพ็กเกจพร้อม "เหลือ N ครั้ง" วันที่ซื้อ และวันหมดอายุ
2
สิทธิ์แบบ "เลือกได้": เปิดดรอปดาวน์ "— เลือกรายการที่ใช้ —" ระบุรายการที่ทำจริง (แต่ละแบบตัดสต็อกคนละอย่าง)
3
กดปุ่ม "ใช้สิทธิ์ 1 ครั้ง" (ปุ่มบอกจำนวนที่จะตัดเสมอ) — หน่วยวัด cc/ml/unit พิมพ์จำนวนเป็นเศษได้ เช่น 2.5
4
ระบบเปิดเคส ฿0 ให้อัตโนมัติ ไปรอที่ "เคสรอปิด" ให้หมอลงผลการรักษา
5
บนใบเสร็จจะแสดงว่ามาจากคอร์สไหน และใช้ครั้งที่เท่าไร (เช่น 4/10)
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตัดใช้สิทธิ์คอร์ส (Redeem — ไม่คิดเงิน)

🛒 ระบบจุดขาย (POS)

เลือกสินค้า/บริการ + เปิดเคส หรือดูเคสรอปิดที่รอดำเนินการ

🏢 กำลังขาย: สาขา 1
💼 สร้างเคส + ขาย 🗒 เคสรอปิด 2
👤 ลูกค้าตัวอย่าง · HN 0001 🩺 หมอ: พญ. ตัวอย่าง

🎟 สิทธิ์แพ็คเกจของลูกค้า

1 แพ็คเกจ

กด "ใช้สิทธิ์" เพื่อเปิด OPD ตัดใช้สิทธิ์ (ไม่คิดเงิน) แล้วให้หมอลงผลการรักษา

Buffet 3 เดือน

ซื้อ 12 พ.ค. 69

หมดอายุ 12 ส.ค. 69

ทรีตเมนต์หน้าใส เลือกได้

เหลือ 4 ครั้ง

— เลือกรายการที่ใช้ —
ใช้สิทธิ์

Meso Fat

เหลือ 7.5 cc (จองไว้ 1 cc)

2.5 cc ใช้สิทธิ์ 2.5 cc

รายการสินค้า/บริการ (แคตตาล็อกขาย — เลื่อนลงมาอยู่ใต้กล่องสิทธิ์)

โบท็อกซ์ 50u

฿4,900

ฟิลเลอร์ 1cc

฿9,900

ทรีตเมนต์

฿1,500

กดผิดคอร์ส: ยกเลิกเคส ฿0 นั้น — สิทธิ์เด้งกลับคืนเอง ไม่ต้องบวกคืนด้วยมือ
🎟️ คอร์ส & สิทธิ์

วิธีโอนสิทธิ์คงเหลือให้ลูกค้าคนอื่น

เข้าจากไหนEMR/ลูกค้า → แพ็คเกจ & สิทธิ์คงเหลือ → "โอนสิท"
1
เปิดสิทธิ์คงเหลือของลูกค้าต้นทาง กด "โอนสิท"
2
เลือก HN ปลายทาง และจำนวนครั้ง/หน่วยที่จะโอน
3
ยืนยัน — ระบบบันทึกประวัติการโอนทั้งสองฝั่ง (ผู้รับเห็นที่มา "รับโอนจาก HN ...")
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: โอนสิทธิ์คงเหลือให้ลูกค้าคนอื่น
Buffet 3 เดือน
เหลือ 4 ครั้ง
โอนสิท
🎟️ คอร์ส & สิทธิ์

วิธีแปลงรายการที่จ่ายแล้วเป็นสิทธิ์ไว้ใช้ภายหลัง

เข้าจากไหนEMR → หน้าเคส → "เก็บเป็นสิทธิ์ไว้ใช้ภายหลัง"
1
ใช้เมื่อลูกค้าจ่ายแล้วแต่ยังไม่ได้ทำ และอยากเก็บไว้ทำวันหลัง
2
กด "เก็บเป็นสิทธิ์ไว้ใช้ภายหลัง" — รายการเปลี่ยนเป็นสิทธิ์คงเหลือของลูกค้า
3
เคสจะติดป้าย "เก็บเป็นสิทธิ์" บนไทม์ไลน์ ให้ตามได้ว่ามาจากบิลไหน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: แปลงรายการที่จ่ายแล้วเป็นสิทธิ์ไว้ใช้ภายหลัง
🎁 เก็บเป็นสิทธิ์ไว้ใช้ภายหลัง
📋 EMR (ประวัติการรักษา)

วิธีเช็คอินลูกค้า → เปิดเคสส่งเข้าห้องตรวจ

เข้าจากไหนงานประจำวัน → นัดหมาย → คลิกนัด → "เริ่มเคสผู้ป่วย"
1
คลิกนัดหมายของลูกค้าที่มาถึง เปิด "รายละเอียดนัด"
2
กด "เช็คอิน + เปิดเคส EMR" — ปุ่มเดียวทำสองอย่าง
3
เคสโผล่ที่ เวชระเบียน (EMR) → รายการเคส ให้หมอเปิดลงผลทันที ไม่ต้องเดินไปบอก
4
ลูกค้า walk-in ที่ยังไม่มี HN: ระบบขึ้น "เริ่มเคส EMR ไม่ได้ (No Customer Profile)" — ไปสร้างลูกค้าที่ POS ก่อน แล้วกลับมากดใหม่ ไม่ต้องจองใหม่
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ลูกค้ามาถึง — เช็คอินแล้วส่งเข้าห้องตรวจ
คุณสมใจ ใจดี · HN 69-90012
10:30 น. · ทรีตเมนต์หน้าใส · พญ. ตัวอย่าง
ยืนยันแล้ว
เริ่มเคสผู้ป่วย
เช็คอิน + เปิดเคส EMR

นัดที่จองผ่านตู้/ออนไลน์แต่ยังไม่มีโปรไฟล์ จะติดที่ขั้นนี้เสมอ — สร้างลูกค้าที่ POS แล้วกลับมากดใหม่ได้เลย ไม่ต้องจองใหม่

ดูรายละเอียดเต็มของหน้าจอนี้ →

📋 EMR (ประวัติการรักษา)

วิธีวาดชาร์ต / มาร์กจุด / ใช้รูปคนไข้

เข้าจากไหนEMR → หน้าเคส → แท็บ "ชาร์ต & บันทึก"
1
เลือก "แบบชาร์ต" ก่อนวาด (หน้าตรง/หน้าข้าง ฯลฯ) — วาดแล้วเปลี่ยนเทมเพลตไม่ได้จนกว่าจะ Reset
2
หรือกด "เลือกรูปมาวาด" ใช้รูปคนไข้จริงเป็นพื้นหลัง วาดทับได้
3
มาร์กจุดหัตถการ — จุดถูกเก็บเป็นตำแหน่ง เปิดดูย้อนหลังได้ว่าครั้งก่อนฉีดตรงไหน
4
จอเล็ก/ใช้ปากกา: กด "วาดเต็มจอ (iPad)"
5
เคสหลายหมอ: แต่ละคนวาดคนละชั้น — กด "เพิ่ม chart" เปิดชั้นใหม่ ("ชาร์ตหลัก" คือชั้นฐาน)
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: หมอเปิดเคส → วาดชาร์ต → ลงยา → เซ็นชื่อ
ชาร์ต & บันทึก รายการ & บิล ข้อมูลคนไข้ ยินยอม
ชั้นชาร์ต (ตามหมอ) ชาร์ตหลัก พญ. ตัวอย่าง (แผ่นที่ 2) เพิ่ม chart
แบบชาร์ต: หน้าตรง หน้าข้าง เลือกรูปมาวาด: ใช้รูปคนไข้
ชาร์ตเปล่า — แตะเพื่อวาด หรือกด “วาดเต็มจอ (iPad)”
ยา/เวชภัณฑ์ที่ใช้ เพิ่ม
ยังไม่มีรายการ
ข้อมูลแพทย์ & ลายเซ็น
พญ. ตัวอย่าง รักษาดี ยังไม่ได้เซ็น

เคสที่มีหมอหลายคน แต่ละคนวาดคนละชั้น ไม่ทับกัน — กด "เพิ่ม chart" เพื่อเปิดชั้นใหม่ ป้าย "ชาร์ตหลัก" คือชั้นฐาน

📋 EMR (ประวัติการรักษา)

วิธีลงยา/เวชภัณฑ์ที่ใช้ (ตัดสต็อกจากเคส)

เข้าจากไหนมี 2 ที่ · จอหมอ: แท็บ "ชาร์ต & บันทึก" แผง "ยา/เวชภัณฑ์ที่ใช้" ข้าง Facechart · จอ BT: แท็บ "รายการ & บิล" หัวข้อ "รายการสินค้าและอุปกรณ์ที่ใช้"
1
หมอ: ใช้แผงย่อข้าง Facechart — กด "เพิ่ม" มุมขวาของแผง · แผงย่อโชว์ ~4 แถวแรก กด "ดูทั้งหมด" เพื่อขยาย
2
BT: ใช้รายการเต็มในแท็บ "รายการ & บิล" — กด "เพิ่มสินค้า" · รายการจัดกลุ่มตามหมวด (คลีน / General / Meso / ถุงมือ / Filler) พร้อมจำนวนต่อหมวด
3
สองที่นี้คือรายการเดียวกัน — เพิ่มจากจอไหนก็เห็นทั้งคู่ทันที
4
รายการที่มีป้าย "รอยืนยัน" คือของที่ระบบดึงอัตโนมัติจากบริการ (สูตรของหัตถการ) — ตัดสต็อกเมื่อปิดเคส ไม่ใช่ตอนเพิ่ม
5
แก้จำนวนได้ที่ปุ่ม −/+ หรือพิมพ์เลขตรง ๆ — แถวที่แก้แล้วขึ้นกำกับ "(ปรับแล้ว)" เทียบกับค่าเริ่มต้นจากสูตร
6
ระบุล็อตถ้าทราบ (แถวแสดง Lot กำกับ) — ไม่ระบุ ระบบตัดตามล็อตที่หมดอายุก่อน (FEFO)
7
ทุกแถวเป็น ฿0 — ตัดสต็อกและลงต้นทุนอัตโนมัติ แต่ไม่ขึ้นบนใบเสร็จลูกค้า
8
สต็อกไม่พอ: ระบบขึ้น "สต๊อกไม่พอ — ขายก่อนรับเข้า" — ยืนยันได้ ระบบตั้งรายการค้างรับให้ฝ่ายคลังตามรับเข้า
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ลงยา/เวชภัณฑ์ที่ใช้ (ตัดสต็อกจากเคส)
จอหมอ — แผงย่อข้าง Facechart (แท็บ "ชาร์ต & บันทึก")
ยา/เวชภัณฑ์ที่ใช้ + เพิ่ม
1. คลีน · 2 รายการ
แอลกอฮอล์ 1 ml− 1 +
สำลีก้อน 10 ชิ้น− 10 +
รวมทั้งหมด 2 รายการดูทั้งหมด ▾
จอ BT — รายการเต็ม (แท็บ "รายการ & บิล")
รายการสินค้าและอุปกรณ์ที่ใช้ + เพิ่มสินค้า
2. General · 1 รายการ

ไหม Cog 19g×60 รอยืนยัน

THR-004 · 2 เส้น · Lot LT-X69PW
2 + ฿0
รวมทั้งหมด 3 รายการ
✓ รายการที่มีป้าย "รอยืนยัน" ดึงอัตโนมัติจากบริการ — ตัดสต็อกเมื่อปิดเคส
📋 EMR (ประวัติการรักษา)

วิธีบันทึกโน้ตแพทย์ / รหัส ICD-10 / ลายเซ็น

เข้าจากไหนEMR → แท็บ "ชาร์ต & บันทึก"
1
โน้ตแพทย์: เลือก "พิมพ์" หรือ "เขียนมือ" ตามถนัด
2
รหัสวินิจฉัย ICD-10: กด "เพิ่มรหัส" ค้นหาแล้วเลือก
3
ช่อง "ข้อมูลแพทย์ & ลายเซ็น" เซ็นชื่อปิดชาร์ต แล้วกด "บันทึกลายเซ็น"
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: บันทึกโน้ตแพทย์ / รหัส ICD-10 / ลายเซ็น

เคส #VI-2608-0042

HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการ
ชาร์ต & บันทึกรายการ & บิลข้อมูลคนไข้ยินยอม

คอลัมน์ขวาของแท็บ "ชาร์ต & บันทึก" (ข้าง Facechart) — ส่วนบนสุดคือ Doctor's Note

📄 Doctor's Note

ยังไม่มีบันทึก

พิมพ์หรือเขียนโน้ตด้านล่างเพื่อบันทึกโน้ตของแพทย์

พิมพ์ เขียนมือ
⤢ ขยาย + New Note ⌫ ล้าง
พิมพ์หรือเขียนโน้ตของแพทย์บนกระดาษนี้...

เขียนหรือพิมพ์บนกระดาษเดียวกัน — สลับด้วยปุ่ม พิมพ์ / เขียนมือ (ล้าง = ลบเฉพาะลายมือ)

แพทย์พญ. ตัวอย่าง รักษาดี
บันทึกโน้ต
ลายเซ็นผูกกับหมอที่ถูกกำหนดให้เคสนี้ ไม่ใช่คนที่กำลังล็อกอิน — ตรวจชื่อหมอบนช่องก่อนเซ็น
📋 EMR (ประวัติการรักษา)

วิธีถ่าย/เทียบรูป Before – After

เข้าจากไหนEMR → แท็บ "ชาร์ต & บันทึก" → ภาพเปรียบเทียบ Before / After
1
ยังไม่มีรูปก่อนทำ: กดปุ่ม "ยังไม่มีรูปก่อนทำ · ถ่าย/เลือกรูป"
2
ระบบดึงรูปล่าสุดของแต่ละประเภทมาเทียบคู่กันให้อัตโนมัติ พร้อมแถบรูปย่อ
3
กด "ดูรูปเต็ม / เทียบ" เปิดเครื่องมือเทียบแบบเต็มจอ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ถ่าย/เทียบรูป Before – After

🖼 ภาพเปรียบเทียบ Before / After 0 รูป

ก่อนทำ รอบันทึก
👤
หลังทำ รอบันทึก
👤

มีเฟซชาร์ตเป็นไกด์ให้วาด/มาร์กจุด เลือกเลย์เอาต์ได้หลายแบบ แล้วถ่ายหรืออัปโหลดทับได้เลย

📷 เปิดเครื่องมือ Before / After
📋 EMR (ประวัติการรักษา)

วิธีระบุ "ผู้ทำ" รายบริการ (ใช้คิดค่ามือ)

เข้าจากไหนEMR → แถบทีมผู้ดูแล / แท็บ "รายการ & บิล"
1
แต่ละบริการมีแถบ "ผู้ทำ" — เลือกหมอ/พยาบาล/ผู้ช่วยที่ทำบริการนั้นจริง
2
ยังไม่เลือก: แถบขึ้นเหลืองอำพัน "ยังไม่ระบุผู้ทำ" — ค่ามือจะยังไม่ถูกคิด
3
คนละบริการคนละคนได้: ใช้ "ผู้ทำต่างกันรายบริการ" / "แยกรายบริการ"
4
เคสปิดแล้ว: แก้ผู้ทำได้เฉพาะแอดมิน และระบบบันทึกประวัติการแก้
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ระบุ "ผู้ทำ" รายบริการ (ใช้คิดค่ามือ)

👥 ทีมผู้ดูแล / ผู้ทำ

สร้างเคสโดย เคาน์เตอร์ A ⇄ เปลี่ยนเซลล์ ▤ แยกรายบริการ + ทีมงานเคส
ฉีดฟิลเลอร์ใต้ตา ⚠ ยังไม่ระบุผู้ทำ ✎ เลือกผู้ทำ
ทรีตเมนต์หน้าใส ⚠ ยังไม่ระบุผู้ทำ ✎ เลือกผู้ทำ
📋 EMR (ประวัติการรักษา)

วิธีปิดเคส / ส่งไปชำระเงิน

เข้าจากไหนEMR → หน้าเคส → ปุ่มขวาบน
1
มียอดต้องเก็บ: กด "ส่งไปชำระเงิน" (ฟ้า) — เคสไปเข้าคิวชำระที่ POS
2
ไม่มียอด หรือยอมปิดทั้งที่ค้าง: กด "ปิดเคส" (เขียว) — ระบบเตือนก่อน ยอดค้างไปอยู่รายงานลูกหนี้ AR ไม่หาย
3
ส่งไป POS แล้วแต่ยังไม่ชำระ: ดึงกลับมาแก้ได้ด้วย "ย้อนกลับไปแก้ไข"
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ปิดเคส / ส่งไปชำระเงิน

ยอดรวมเคสนี้

฿15,999

ยังไม่ชำระ · ค้าง ฿15,999

✎ แก้ไขเคส → ส่งไปชำระเงิน
👛 ยกเลิก + คืนเป็นเครดิต 🎁 เก็บเป็นสิทธิ์ไว้ใช้ภายหลัง ⇄ โอนเคสไป HN อื่น
📋 EMR (ประวัติการรักษา)

วิธีเพิ่มรายการที่ลืมบันทึก หลังปิดเคสแล้ว

เข้าจากไหนEMR → เคสที่ปิดแล้ว → "เพิ่มย้อนหลัง"
1
เปิดเคสที่ปิดแล้ว กด "เพิ่มย้อนหลัง"
2
เลือกสินค้า/เวชภัณฑ์ที่ลืมลง พร้อมจำนวน
3
ใส่เหตุผล — ระบบบันทึกผู้ทำรายการ เวลา และเหตุผลลงประวัติการแก้ไขถาวร
4
ของที่เพิ่มไปแสดงในประวัติลูกค้าด้วย
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เพิ่มรายการที่ลืมบันทึก หลังปิดเคสแล้ว
VI-2608-0042
ปิดเคสแล้ว
เพิ่มย้อนหลัง
📋 EMR (ประวัติการรักษา)

วิธีแก้จำนวนที่ใช้ บนเคสที่ปิดแล้ว

เข้าจากไหนEMR → เคสที่ปิดแล้ว → "แก้ไขเคส (ปิดแล้ว)" → "แก้จำนวนที่ใช้"
1
กด "แก้ไขเคส (ปิดแล้ว)" เปิดโหมดแก้ย้อนหลัง
2
พิมพ์จำนวนใหม่ทับได้เลย (เช่น 100 → 50) ไม่ต้องกดลูกศรทีละครั้ง
3
ใส่เหตุผล (บังคับ) แล้วบันทึก
4
ระบบปรับสต็อกตามส่วนต่างให้เอง — ส่วนที่ลดคืนเข้าล็อตเดิมที่ตัดไป
5
ทุกการแก้ลงประวัติการแก้ไข: ใคร จากเท่าไหร่เป็นเท่าไหร่ เมื่อไหร่ เหตุผลอะไร — เก็บถาวร
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: คีย์จำนวนผิดแล้วปิดเคสไปแล้ว — แก้ได้โดยไม่ต้องยกเลิกบิล
VI-2608-0042 · คุณสมใจ ใจดี
ปิดเคสแล้ว · ออกใบเสร็จแล้ว
แก้ไขเคส (ปิดแล้ว)
เวชภัณฑ์ที่ใช้
Botulinum toxin
฿0 · ตัดสต็อกแล้ว
100 unit

กรณีเดียวที่ระบบไม่ยอมให้ลดจำนวน คือหาไม่เจอว่าตอนนั้นตัดสต็อกจากล็อตไหน ทั้งในรายการและในประวัติการตัดสต็อก — ถ้าเจอในประวัติ ระบบจะคืนเข้าล็อตนั้นให้เอง

กรณีเดียวที่ลดไม่ได้: รายการเก่าที่หาไม่เจอว่าตัดจากล็อตไหน ทั้งในรายการและในประวัติการตัดสต็อก — ระบบจะแนะทางแก้บนจอ
📋 EMR (ประวัติการรักษา)

วิธีบันทึกเงินที่รับเพิ่มจากหน้าเคส

เข้าจากไหนEMR → แท็บ "รายการ & บิล" → "เพิ่มการชำระเงิน"
1
ใช้เมื่อรับเงินมาแล้วจริง เช่น ลูกค้าโอนตามมาทีหลัง
2
เลือก "ช่องทาง / ที่มาของเงิน" + กรอกจำนวนที่ได้รับจริง
3
รับหลายทาง: กด "เพิ่มช่องทางชำระ (แบ่งจ่าย)" — ระบบรวมที่บรรทัด "รวมที่จะบันทึก"
4
แนบสลิป (ไม่บังคับ — แต่เงินโอนควรแนบทุกครั้ง)
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: บันทึกเงินที่รับเพิ่มจากหน้าเคส
เพิ่มการชำระเงิน
ปุ่มนี้บันทึกเงินที่รับมาแล้ว ไม่ใช่การเรียกเก็บ — ยังไม่ได้เงินจริงอย่ากด ไม่งั้นรายงานจะบอกว่าเก็บแล้วทั้งที่ยังไม่ได้เก็บ
📋 EMR (ประวัติการรักษา)

วิธีดูประวัติการรักษาเดิมของคนไข้ระหว่างเปิดเคส

เข้าจากไหนEMR → แท็บ "ข้อมูลคนไข้" → "ดูประวัติการรักษา"
1
กด "ดูประวัติการรักษา" มุมขวาบน — เปิดหน้าต่างดูทุก visit ในอดีตโดยไม่ต้องออกจากเคส
2
แต่ละรายการแสดงวันที่ บริการ และสถานะเคส
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ดูประวัติการรักษาเดิมของคนไข้ระหว่างเปิดเคส
📄 ดูประวัติการเข้ารับบริการทั้งหมด
📋 EMR (ประวัติการรักษา)

วิธีบันทึกแพ้ยา / ประวัติสุขภาพ

เข้าจากไหนEMR → แท็บ "ข้อมูลคนไข้" → ประวัติสุขภาพ · แพ้ยา
1
กรอกที่กล่องประวัติสุขภาพ/แพ้ยา — เป็นข้อมูลของตัวคนไข้ ไม่ใช่ของเคสนี้
2
ที่ใส่จะเด้งขึ้นส่วนหัวเคสทุกครั้งที่คนไข้เปิดเคสใหม่ ให้คนทำหัตถการเห็นก่อนลงมือ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: บันทึกแพ้ยา / ประวัติสุขภาพ

เคส #VI-2608-0042

HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการ
ชาร์ต & บันทึกรายการ & บิลข้อมูลคนไข้ยินยอม

📈 ประวัติสุขภาพ

⚠️

แพ้ยา

Penicillin

โรคประจำตัว / ประวัติความดันสูง
กรุ๊ปเลือดO
ยาที่ใช้ประจำ
ประกันสุขภาพ
อย่าจดแพ้ยาไว้ในโน้ตเคสอย่างเดียว — โน้ตเคสไม่เด้งขึ้นเคสหน้า
📋 EMR (ประวัติการรักษา)

วิธีทำใบยินยอม (Consent) และเซ็นชื่อ

เข้าจากไหนEMR → แท็บ "ยินยอม"
1
เลือกหมวดใบยินยอมที่ตรงกับหัตถการ แล้วกด "เลือก & เซ็น"
2
ให้ลูกค้าอ่านและเซ็นบนจอ (รองรับ iPad)
3
เอกสารที่เซ็นแล้วเก็บติดเคส เปิดดูย้อนหลังได้
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ทำใบยินยอม (Consent) และเซ็นชื่อ

เคส #VI-2608-0042

HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการ
ชาร์ต & บันทึกรายการ & บิลข้อมูลคนไข้ยินยอม

🖋 เลือกแม่แบบหนังสือยินยอม

หนังสือยินยอมรับการทำหัตถการฉีดฟิลเลอร์

หัตถการ

ฟอร์มข้อความ · ฉบับ 2

📄 ดูตัวอย่าง 🖋 เลือก & เซ็น

เซ็นแล้วในเคสนี้ 0 ⬆ อัปโหลดฟอร์มที่เซ็นแล้ว

ยังไม่มีหนังสือยินยอมที่เซ็นในเคสนี้

📋 EMR (ประวัติการรักษา)

วิธีเขียนโน้ตเคส (บันทึกภายใน)

เข้าจากไหนEMR → แท็บ "รายการ & บิล" → โน้ตเคส
1
เลือกหมวดหมู่เป็นชิป (เช่น 🎬 รีวิว/KOL) พิมพ์ข้อความ กด "บันทึก"
2
โน้ตเคสเป็นบันทึกภายใน — ไม่แสดงให้ลูกค้าเห็นและไม่ขึ้นใบเสร็จ
3
หมวดที่ติดธง "เกี่ยวกับคลัง" มีป้าย "เคลม" และถูกส่งต่อไป คลัง → เคลมสินค้า อัตโนมัติ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เขียนโน้ตเคส (บันทึกภายใน)

📋 โน้ตเคส +

โน้ตภายใน — ไม่ขึ้นใบเสร็จ ไม่เห็นโดยลูกค้า · เพิ่ม/ลบได้ทุกสถานะเคส

📋 EMR (ประวัติการรักษา)

วิธีโอนเคสไป HN อื่น (คีย์ผิดคน)

เข้าจากไหนEMR → หน้าเคส → "โอนเคสไป HN อื่น" (แอดมิน)
1
เฉพาะแอดมิน และเคสต้องชำระครบก่อน
2
เลือก HN ปลายทางที่ถูกต้อง แล้วยืนยัน
3
ประวัติ/รายการ/เงินของเคสย้ายไปอยู่ใต้คนที่ถูกต้อง พร้อมป้ายบอกที่มา
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: โอนเคสไป HN อื่น (คีย์ผิดคน)
⇄ โอนเคสไป HN อื่น (ต้องชำระครบก่อน)
↩️ ยกเลิก & คืนเงิน

วิธียกเลิกเคส/บิล แล้วคืนเป็นเครดิต

เข้าจากไหนPOS → ปุ่ม "ยกเลิกรายการ" (หัวหน้าจอ)
1
กด "ยกเลิกรายการ" — เปิดหน้าต่าง "ยกเลิกรายการ (Void)"
2
ค้นหาเคสด้วยชื่อ / รหัสเคส / HN (เคสที่หมอทำแล้วจะไม่แสดงที่นี่ — ตั้งใจ)
3
กด "ยกเลิก + คืนเป็นเครดิต" ที่แถวเคส
4
เลือกวิธีคืนเงิน ใส่เหตุผล (และ PIN ถ้าคลินิกตั้งไว้)
5
กด "ยืนยัน ยกเลิก + คืนเครดิต" — เงินกลายเป็นเครดิตของลูกค้า ใช้กับบิลถัดไปได้ทันที สต็อกที่ตัดไปคืนเข้าคลังเอง
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ยกเลิกเคสที่ชำระแล้ว แล้วคืนเป็นเครดิต
ยกเลิกรายการ
(หน้าจอ POS ปกติ — กดปุ่มมุมขวาบนเพื่อเปิดหน้าต่างยกเลิก)

ใบเสร็จของเคสที่ยกเลิกแล้ว จะไม่ถูกนับเป็นยอดขายอีก และถ้าพิมพ์ซ้ำจะมีแถบ “ยกเลิก” อยู่บนใบ — ป้องกันไม่ให้ใบที่ยกเลิกแล้วถูกใช้เหมือนใบจริง

ดูรายละเอียดเต็มของหน้าจอนี้ →

↩️ ยกเลิก & คืนเงิน

วิธียกเลิกแบบไม่คืนเงิน (เคสคีย์ผิดคน — แอดมิน)

เข้าจากไหนPOS → ยกเลิกรายการ (Void) → "ยกเลิก (ไม่คืนเงิน)"
1
ปุ่มนี้เฉพาะแอดมิน — พนักงานทั่วไปเห็นปุ่มเทา มีไอคอนกุญแจ กดไม่ได้
2
ใช้เมื่อเงินถูกต้องแต่คีย์ผิดคน/ผิดรายการ แล้วจะไปคีย์ใหม่ให้ถูก
3
ใส่ "รหัสพนักงาน" และ "เหตุผล" — ระบบบันทึกถาวร
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ยกเลิกแบบไม่คืนเงิน (เคสคีย์ผิดคน — แอดมิน)

ลูกค้าตัวอย่าง HN: 0001 ชำระแล้ว · ยังไม่ได้ทำ

เคส VI-XXXX · 5 ส.ค. 2569

ชำระแล้ว ฿5,999 · ค้างชำระ ฿0

🚫 ยกเลิก (ไม่คืนเงิน)
ใช้คู่กับการคีย์บิลใหม่เสมอ ไม่งั้นเงินที่รับมาจะไม่มีบิลรองรับ
↩️ ยกเลิก & คืนเงิน

วิธียกเลิกเคสที่ปิดไปแล้ว

เข้าจากไหนEMR → เคสปิดแล้ว → "ยกเลิกเคสที่ปิดแล้ว" (แอดมิน)
1
เปิดเคสที่ปิดแล้ว กด "ยกเลิกเคสที่ปิดแล้ว"
2
กรอก "เหตุผลในการยกเลิก" — บังคับ
3
ถ้ามีการชำระ: เลือกวิธีคืน (เครดิต / Beam ตามเงื่อนไข) แล้วยืนยัน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ยกเลิกเคสที่ปิดไปแล้ว
ยกเลิกเคสที่ปิดแล้ว
คืนเงิน Beam มีเงื่อนไขเวลา: ก่อน 20:00 ของวันที่ชำระคืนอัตโนมัติได้ · หลัง 20:00/ข้ามวัน ระบบแจ้งขั้นตอนแทน
↩️ ยกเลิก & คืนเงิน

ใบเสร็จของเคสที่ยกเลิก — เกิดอะไรขึ้น

เข้าจากไหนอัตโนมัติหลังยกเลิก
1
ใบเสร็จนั้นหยุดนับเป็นยอดขายทันที (รายงานทุกตัวไม่นับ)
2
ค้นหาใบเสร็จยังเจอ แต่ติดป้าย "ยกเลิก" ชัดเจน — ไม่ถูกซ่อน เพื่อให้ตรวจย้อนหลังได้
3
พิมพ์ซ้ำใบที่ยกเลิกแล้ว: มีแถบ "ยกเลิก" บนใบ ป้องกันใช้แทนใบจริง
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ใบเสร็จของเคสที่ยกเลิก — เกิดอะไรขึ้น
🧾

R-6608-0142 POS

฿5,999.00 · 5 ส.ค. 2569

👁 ดู
📦 คลังสินค้า

วิธีรับสินค้าเข้าคลัง (GR) พร้อม Lot และวันหมดอายุ

เข้าจากไหนคลังสินค้า → รับสินค้าเข้า (GR) → "รับสินค้าเข้า"
1
กด "รับสินค้าเข้า" กรอกวันที่รับ, Supplier, อ้างอิง PO (ถ้ามี)
2
เพิ่มรายการ: เลือกสินค้า, ใส่ Lot number (บังคับ — ดูจากกล่อง/ขวดจริง), จำนวน, วันหมดอายุ
3
ต้นทุน/หน่วยเว้นว่างได้ = สถานะ "รอบัญชีเติมต้นทุน" — ของเข้าสต็อกใช้ได้เลย ไม่ต้องรอบัญชี
4
ติ๊ก GPO/เย็น (cold chain) ถ้ามี และระบุตำแหน่งจัดเก็บ
5
กด "โพสต์เข้าคลัง" — ถ้าคลินิกเปิดโหมดตรวจทาน ใบจะรอสถานะ "รอตรวจสอบ" ให้ผู้มีสิทธิ์อนุมัติก่อน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: รับของเข้าคลัง พร้อม Lot และวันหมดอายุ
รับสินค้าเข้า (GR)
รับสินค้าเข้า

ต้นทุน/หน่วยเว้นว่างได้ ใบจะขึ้นสถานะ "รอบัญชีเติมต้นทุน" — ของเข้าสต็อกแล้วใช้ได้เลย ไม่ต้องรอฝ่ายบัญชี

สินค้า+Lot ซ้ำกันในใบเดียวต้องรวมเป็นแถวเดียว — ระบบเตือนให้

ดูรายละเอียดเต็มของหน้าจอนี้ →

📦 คลังสินค้า

วิธีปรับยอดสต็อก (ของหาย/นับเจอไม่ตรง)

เข้าจากไหนคลังสินค้า → ปรับสต็อก
1
เลือกสินค้าและล็อตที่จะปรับ ใส่จำนวนจริงที่นับได้
2
ใส่เหตุผลการปรับ — ระบบบันทึกผู้ปรับและเวลาเสมอ
3
ยอดต่างถูกลงบัญชีเป็นรายการปรับ ไม่ปนกับยอดขาย
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ปรับยอดสต็อก (ของหาย/นับเจอไม่ตรง)
สำลีแอลกอฮอล์ · Lot CT-2608ในระบบ: 120
จำนวนที่นับได้จริง
เหตุผลระบุเหตุผลการปรับ
บันทึกการปรับ
📦 คลังสินค้า

วิธีโอนสินค้าข้ามสาขา/ข้ามคลินิก

เข้าจากไหนคลังสินค้า → โอนออกภายนอก / รับโอนเข้า
1
ฝั่งส่ง: สร้างใบโอนออก เลือกสินค้า+ล็อต → ระบบตัดสต็อกและออกไฟล์โอนพร้อมรหัสตรวจสอบ
2
ฝั่งรับ: เปิด "รับโอนเข้า" อัปโหลดไฟล์ → ระบบตรวจ checksum แล้วให้ตรวจทานก่อนอนุมัติ
3
อนุมัติแล้วของเข้าเป็นล็อตใหม่ฝั่งรับ พร้อมต้นทุนตามต้นทาง
4
คลินิกที่เชื่อมเครือข่าย (binding) แล้ว: เลือกส่งออนไลน์ถึงปลายทางได้โดยไม่ต้องใช้ไฟล์
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: โอนสินค้าข้ามสาขา/ข้ามคลินิก

คลัง › โอนออกภายนอก

+ สร้างใบโอนออก

ยังไม่มีใบโอนออกภายนอก

📦 คลังสินค้า

วิธีดูล็อต / ของใกล้หมดอายุ

เข้าจากไหนคลังสินค้า → ล็อตสินค้า
1
หน้าล็อตแสดงทุกล็อตพร้อมวันหมดอายุและจำนวนคงเหลือ
2
ระบบเตือนล่วงหน้าเมื่อใกล้หมดอายุ และจ่ายของหมดอายุก่อนออกก่อน (FEFO) อัตโนมัติ
3
ดูประวัติการเคลื่อนไหวของแต่ละล็อตได้ว่าถูกตัดไปกับเคสไหน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ดูล็อต / ของใกล้หมดอายุ

มูลค่าสต็อก

฿1.2M

ใกล้หมด ⚠

4

ใกล้หมดอายุ 🗓

2

ค้นหายา/เวชภัณฑ์ ตามชื่อหรือรหัส…
🔍
📦 คลังสินค้า

วิธีเคลมสินค้า (ของเสีย/ปัญหาจากผู้ขาย)

เข้าจากไหนคลังสินค้า → เคลมสินค้า
1
สร้างรายการเคลม เลือกสินค้า+ล็อตที่มีปัญหา
2
เคสที่หมอโน้ตหมวด "เกี่ยวกับคลัง" ไว้ จะถูกส่งเข้ามาที่นี่อัตโนมัติ (ป้าย "เคลม")
3
บันทึกผลเคลม — ของที่เคลมออกถูกตัดจากสต็อกแบบตามรอยได้
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เคลมสินค้า (ของเสีย/ปัญหาจากผู้ขาย)

คลัง › เคลมสินค้า

+ สร้างใบเคลม

มูลค่าเคลมค้าง (ยังเป็นทรัพย์สิน)

฿12,400

จำนวนค้างเคลม

3

ใบเคลมค้าง

1

ใบเคลม Issue จากเคส (1)
CLM-XXXX หัว Thermage DC · Lot A123 · เคลม 1 ↩ บันทึกรับของคืน
👥 ลูกค้า & CRM

วิธีเพิ่มลูกค้าใหม่ / ค้นหาลูกค้า

เข้าจากไหนงานประจำวัน → ลูกค้า
1
ค้นหาด้วยชื่อ / เบอร์ / HN ก่อนเสมอ กันสร้างซ้ำ
2
ไม่พบ: กดเพิ่มลูกค้าใหม่ กรอกข้อมูล หรือใช้สแกนบัตรประชาชนที่ POS ให้กรอกอัตโนมัติ
3
ระบบออก HN ให้อัตโนมัติ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เพิ่มลูกค้าใหม่ / ค้นหาลูกค้า
🔍 ค้นหา
+
ทั้งหมด VIP Platinum Gold มาใช้บริการล่าสุด (30 วัน) ⚙ ตัวกรอง
👥 ลูกค้า & CRM

วิธีติดป้ายกำกับลูกค้า (KOL / รีวิว ฯลฯ)

เข้าจากไหนลูกค้า → โปรไฟล์ → ป้ายกำกับ
1
เปิดโปรไฟล์ลูกค้า เพิ่ม/ถอดป้ายกำกับได้จากหน้าแก้ไข
2
ป้ายแสดงถัดจากระดับสมาชิก (tier) บนหัวเคสด้วย — เห็น 2 ป้ายแรก ที่เหลือย่อเป็น "+N"
3
ป้ายจากแคตตาล็อกกลางของสาขา — เพิ่มชนิดป้ายใหม่ได้ที่ตั้งค่า CRM
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ติดป้ายกำกับลูกค้า (KOL / รีวิว ฯลฯ)

ป้ายกำกับลูกค้า

KOL รีวิว แพ้ง่าย

ยังไม่มีป้ายกำกับในระบบ — สร้างได้ที่เมนู ตั้งค่า > ป้ายกำกับลูกค้า

ป้ายบนการ์ดลูกค้า:

ยังไม่มีป้ายกำกับ
👥 ลูกค้า & CRM

วิธีเติม/ตัด/โอนเครดิตในกระเป๋าเงินลูกค้า

เข้าจากไหนลูกค้า → โปรไฟล์ → กระเป๋าเงิน/วงเงิน
1
เติม/ปรับ: ใส่จำนวน พร้อมเหตุผล (และ "รหัส PIN ยืนยัน" ถ้าคลินิกตั้งไว้)
2
ใช้จ่าย: ที่ POS เลือกช่องทางเครดิต — ยอดไม่พอระบบแจ้ง "เครดิตไม่พอ — ขาดอีก ฿… กรุณาเลือกชำระส่วนที่ขาดด้วยวิธีอื่น"
3
โอนเครดิตให้ HN อื่น: ใช้ปุ่มโอนที่กระเป๋าเงิน ระบบบันทึกสองฝั่ง
4
เครดิตจากการยกเลิกบิล (void-to-credit) เข้ากระเป๋านี้อัตโนมัติ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เติม/ตัด/โอนเครดิตในกระเป๋าเงินลูกค้า

กระเป๋าเงินลูกค้า (แท็บ "เครดิต")

เครดิตสด

🗓 หมดอายุ 31 ธ.ค. 2569

฿3,000.00 🎚 ปรับวงเงิน ⇄ โอนวงเงิน

เครดิตโบนัส (ของแถม)

🗓 ⚠ ใกล้หมดอายุ 15 ส.ค. 2569 (อีก 10 วัน)

฿500.00

โบนัสโอนไม่ได้ (ของแถมผูกกับคนที่ซื้อ) — จึงไม่มีปุ่ม "โอนวงเงิน"

👥 ลูกค้า & CRM

วิธีส่ง SMS หาลูกค้าเฉพาะกลุ่ม

เข้าจากไหนลูกค้า → แคมเปญ SMS
1
เลือกกลุ่มเป้าหมายด้วยตัวกรอง (tier, คอร์สใกล้หมด, ช่วงที่มาใช้บริการ)
2
พิมพ์ข้อความ ระบบแสดงจำนวนผู้รับและเครดิตที่จะใช้ก่อนส่ง
3
ลูกค้าที่เคยขอไม่รับข่าวสาร ระบบไม่ส่งซ้ำให้อัตโนมัติ
4
ดูผลการส่งย้อนหลังได้ที่หน้าผลแคมเปญ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ส่ง SMS หาลูกค้าเฉพาะกลุ่ม
VIP มาใช้บริการล่าสุด (30 วัน) ✉ ส่ง SMS (128)
📅 นัดหมาย

วิธีสร้างนัดใหม่ / นัด Walk-in

เข้าจากไหนงานประจำวัน → นัดหมาย
1
กดช่วงเวลาที่ว่างบนตาราง หรือปุ่มสร้างนัด
2
ลูกค้าในระบบ: ค้นหาแล้วเลือก · Walk-in: สลับเป็น "ลูกค้า Walk-in" กรอกชื่อ-เบอร์
3
เลือกบริการ ผู้ให้บริการ และห้อง แล้วบันทึก
4
นัด Walk-in ยังไม่มีโปรไฟล์ — วันมาจริงต้องสร้างลูกค้าที่ POS ก่อนเช็คอิน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: สร้างนัดใหม่ / นัด Walk-in
+ จองนัดใหม่
📅 นัดหมาย

วิธียืนยันนัด / จัดการนัดจาก LINE

เข้าจากไหนนัดหมาย → รายการนัด
1
นัดที่จองผ่าน LINE ขึ้นสถานะ "รอยืนยัน (จาก LINE)" — กด "ยืนยันนัดหมาย" เพื่อรับนัด
2
มุมมองรายการ (agenda) กรองเฉพาะนัดรอยืนยันได้
3
เปลี่ยนสถานะนัดตามจริง: ยืนยันแล้ว → เช็คอินแล้ว → กำลังให้บริการ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ยืนยันนัด / จัดการนัดจาก LINE

รายละเอียดนัด

AP-680805-012

สถานะ รอยืนยัน

👤 ข้อมูลลูกค้า

ชื่อ

ลูกค้าตัวอย่าง

เบอร์โทร

08x-xxx-xxxx

อีเมล

รหัสลูกค้า (HN)

📅 รายละเอียดนัด

บริการ

โบท็อกซ์ 50u

วันที่

พุธ, 6 สิงหาคม 2569

เวลา

14:00 - 14:30

ระยะเวลา

30 นาที

ผู้ให้บริการ

พญ. ตัวอย่าง

ช่องทางการจอง

LINE (ลูกค้าจองเอง)

✓ ยืนยันนัดหมาย
📅 นัดหมาย

วิธีตั้ง/ยกเลิกวันหยุด วันห้ามนัด

เข้าจากไหนนัดหมาย → ตั้งค่าวันหยุด (admin)
1
เลือกวันที่ต้องการปิดรับนัด (วันหยุดคลินิก/วันหมอไม่เข้า)
2
วันนั้นจะจองไม่ได้ทั้งจากหน้าร้านและจาก LINE
3
ยกเลิกวันหยุด: เอาวันออกจากรายการ ระบบเปิดจองต่อทันที
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ตั้ง/ยกเลิกวันหยุด วันห้ามนัด

ตั้งค่านัดหมาย — เวลาทำการ · วันหยุด · ช่วงเวลาที่ปิด · ความจุห้อง (มีผลกับช่วงเวลาว่างในการจอง)

เพิ่มวันหยุด

วันที่

เลือกวันที่

ชื่อ (เลือกได้)

เช่น วันสงกรานต์

เปิดบางส่วน ตั้งแต่ – ถึง

+ เพิ่ม

เว้นช่อง "เปิดบางส่วน" ว่างไว้ = ปิดทั้งวัน

วันหยุดที่ตั้งไว้

ยังไม่มีวันหยุด

📊 รายงาน & การเงิน

วิธีดูรายงานยอดขายประจำวัน/เดือน

เข้าจากไหนรายงาน → ยอดขาย
1
เลือกช่วงวันที่ (วันนี้ / เมื่อวาน / 7 วันล่าสุด / กำหนดเอง) — ตัวกรองจำต่อหน้า เปิดมาอีกครั้งได้ช่วงเดิม
2
ยอดแยกช่องทางชำระ (เงินสด/โอน/บัตร/QR) และแยก มัดจำ ออกจากรายได้
3
ใบเสร็จที่ยกเลิกไม่ถูกนับ — ไม่ต้องหักเอง
4
ส่งออก Excel/PDF ได้จากหัวรายงาน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ดูรายงานยอดขายประจำวัน/เดือน
📊 ภาพรวม 📈 วิเคราะห์กำไร 🗒 บันทึกรายการ 👛 ค่ามือ / คอมมิชชั่น 📑 รายงานแยกตามหมวด
วันนี้ เดือนนี้ เลือกช่วงเอง เทียบช่วง ▾

รายได้รวมในช่วงเวลา

฿186,400

รายรับทั้งหมดรวมภาษีมูลค่าเพิ่ม

จำนวนบิลทั้งหมด

42 บิล

เฉลี่ยต่อบิล (Ticket Size)

฿4,438

📊 รายงาน & การเงิน

วิธีดูรายงานค่ามือหมอ (DF) และคอมมิชชั่น

เข้าจากไหนรายงาน → ค่ามือแพทย์
1
เลือกช่วงวันและหมอ — รายการแสดงต่อบริการว่าคิดค่ามือจากยอดจริงเท่าไร
2
บริการจากคอร์ส: แสดงว่ามาจากคอร์สไหน และมูลค่าที่ใช้คิด
3
เคสที่รับโอนสิทธิ์มา: แสดง HN ผู้โอน (donor) กำกับ
4
ส่งออกเป็นไฟล์เพื่อทำจ่ายได้
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ดูรายงานค่ามือหมอ (DF) และคอมมิชชั่น
🪙 รายงานค่ามือ (ต่อหัตถการ) 👛 สรุปคอมมิชชั่น
วันที่ทำ เลขเคส HN ชื่อผู้ป่วย บริการ/หัตถการ ยา/เวชภัณฑ์ ตัดใช้วันนี้ ใช้สะสม ราคาอ้างอิง (ฐานค่ามือ)ไม่ใช่รายได้/ยอดชำระ ใช้จากคอร์ส แพทย์ ผู้ช่วย ค่ามือ(กรอกเอง) หมายเหตุ
5 ส.ค. VI-XXXX 0001 ลูกค้าตัวอย่าง ฉีดฟิลเลอร์ใต้ตา ยาชา 2% 1 3/10 ฿9,900 Filler Program พญ. ตัวอย่าง น้องมิ้นท์
ค่ามือคิดจาก "ผู้ทำ" ที่ระบุในเคส — เคสที่ยังไม่ระบุผู้ทำจะไม่ปรากฏในรายงานนี้
📊 รายงาน & การเงิน

วิธีดูลูกหนี้ค้างชำระ (AR)

เข้าจากไหนรายงาน → ลูกหนี้/ค้างชำระ
1
รายการเคสที่ปิดโดยยังมียอดค้าง อยู่ที่นี่ทั้งหมด — ไม่หายแม้ปิดเคสแล้ว
2
ตามเก็บ: เปิดเคสจากรายงาน แล้วบันทึกรับเงินด้วย "เพิ่มการชำระเงิน"
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ดูลูกหนี้ค้างชำระ (AR)

รายงาน › ค้างชำระ (AR) · Export Excel ได้

ลูกค้าค้างชำระ 👥

4 ราย

ยอดค้างชำระรวม 🪙

฿23,499

เกิน 90 วัน 🗓

฿4,000

จำนวนบิลค้าง 👛

5 บิล

ค้นหาชื่อลูกค้า / OPD
🔍
📊 รายงาน & การเงิน

วิธีดูรายละเอียดการชำระของเคส (เงินมาจากไหน)

เข้าจากไหนEMR → แท็บ "รายการ & บิล" → รายละเอียดการชำระเงิน
1
กล่องนี้แยกยอดชำระสุทธิ / มัดจำ / มัดจำจองออนไลน์ / ชำระที่ตู้
2
เห็น "ชำระที่ตู้" = เงินเข้าระบบแล้ว อย่าเรียกเก็บซ้ำ
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ดูรายละเอียดการชำระของเคส (เงินมาจากไหน)

เคส #VI-2608-0042

HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการ
ชาร์ต & บันทึกรายการ & บิลข้อมูลคนไข้ยินยอม

ท้ายแท็บ "รายการ & บิล" (ใต้รายการยา/เวชภัณฑ์) — แผงนี้ขึ้นเมื่อเคสปิด/จ่ายครบ

👛 รายละเอียดการชำระเงิน

🧾 เลขที่ R-XXXX

ยอดชำระสุทธิ

฿5,999.00

QR พร้อมเพย์ ชำระที่ตู้ ฿4,000.00
เงินสด เก็บเพิ่มในระบบ ฿1,999.00
🧑‍💼 ระบบบุคคล (HR)

วิธีจัดตารางกะพนักงาน

เข้าจากไหนHR → ตารางกะ
1
ตารางกริด พนักงาน × วันในสัปดาห์ — คลิกช่องเพื่อกำหนดกะ
2
ใช้ template กะอัตโนมัติได้ (ช่องสีเทา = จาก template)
3
กะที่มาจากคำขอพนักงานที่อนุมัติแล้วแสดงเป็นสีเขียว
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: จัดตารางกะพนักงาน

🗓 จัดตารางกะการทำงาน

HR › จัดการบุคคล › จัดตารางกะ — สงวนสิทธิ์สำหรับฝ่ายบุคคล

⧉ คัดลอกสัปดาห์ก่อน 💾 บันทึกตาราง

สัปดาห์

4 – 10 ส.ค. 2569

สัปดาห์นี้
เช้า 08:00-16:00 บ่าย 13:00-21:00 ดึก 21:00-05:00 หยุด ✓ พนักงานอนุมัติ 🕐 รออนุมัติ
พนักงานจ. 4อ. 5พ. 6พฤ. 7ศ. 8
น้องมิ้นท์ (BT) เช้า เช้า หยุด บ่าย ดึก
น้องฝ้าย (ผู้ช่วย) บ่าย เช้า เช้า หยุด เช้า
🧑‍💼 ระบบบุคคล (HR)

วิธีขอแลกเวร / ขอลา / ขอ OT

เข้าจากไหนHR → แท็บของพนักงาน
1
แลกเวร: แท็บขอแลกเวร กด "+" เลือก "กะของฉัน" ที่จะแลก (เลือกได้เฉพาะกะที่มอบหมายจริงในอีก 60 วันข้างหน้า)
2
ลา: เลือกประเภทลา ระบุวัน — โควตาคงเหลือแสดงให้เห็นก่อนส่ง
3
OT: ส่งคำขอพร้อมเหตุผล — จำนวนเงินคำนวณอัตโนมัติหลังอนุมัติเท่านั้น
4
ทุกคำขอ: หัวหน้าอนุมัติแล้วฟอร์มล็อกแก้ไขไม่ได้
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: ขอแลกเวร / ขอลา / ขอ OT

กะของฉัน

ส่งแผนการเข้างานรายสัปดาห์ หรือขอแลกเวรกับเพื่อนร่วมงาน

ตารางของฉัน ⇄ ขอแลกเวร ขอลาหยุด

แลกเวร พ. 6 ส.ค. (เช้า) กับ น้องฝ้าย — ศ. 8 ส.ค. (บ่าย)

รอเพื่อนตอบรับ → รอหัวหน้าอนุมัติ

🖨️ ใบเสร็จ & การพิมพ์

วิธีพิมพ์ใบเสร็จ / พิมพ์ซ้ำ

เข้าจากไหนPOS → หลังชำระเงิน · หรือเมนูใบเสร็จ
1
หลังชำระสำเร็จ ระบบเสนอพิมพ์ทันที (เครื่อง 80mm)
2
พิมพ์ซ้ำทีหลัง: ค้นใบเสร็จจากเมนูใบเสร็จ แล้วสั่งพิมพ์ซ้ำ
3
ใบที่พิมพ์ซ้ำมีแถบ COPY กำกับ · ใบของเคสที่ยกเลิกมีแถบ "ยกเลิก"
4
ลูกค้าที่จ่ายที่ตู้: พิมพ์ใบเสร็จจาก ERP ได้เหมือนกัน
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: พิมพ์ใบเสร็จ / พิมพ์ซ้ำ

🧾 ใบเสร็จรับเงิน 2

🧾

R-6608-0142 POS

฿5,999.00 · 5 ส.ค. 2569

👁 ดู 🖨 พิมพ์ (สำเนา)
🧾

R-6608-0139 🖥 จากตู้ kiosk

฿4,000.00 · 5 ส.ค. 2569

👁 ดู
🖨️ ใบเสร็จ & การพิมพ์

เวชภัณฑ์ทำไมไม่ขึ้นบนใบเสร็จ (และของแถมขึ้น)

เข้าจากไหนอัตโนมัติ
1
เวชภัณฑ์ที่ใช้ในหัตถการ (เข็ม สำลี ยาชา) ตัดสต็อกและลงต้นทุน แต่ไม่แสดงเป็นรายการขายบนใบเสร็จ
2
ของแถมที่ตั้งราคา ฿0 แสดงบนใบเสร็จ — ให้ลูกค้าเห็นว่าได้อะไรไป
▶ ตัวอย่างจริง — กด "เล่น" ดูทีละขั้น
เดินให้ดู: เวชภัณฑ์ทำไมไม่ขึ้นบนใบเสร็จ (และของแถมขึ้น)

ในเคส (จอ BT)

ฉีดฟิลเลอร์ใต้ตา · ฿9,900
ยาชา 2% · 3 ml เวชภัณฑ์
มาส์กหน้า (ของแถม) · ฿0
📋 EMR (ประวัติการรักษา)

วิธีแบ่งใช้คอร์สให้อีก HN (แบ่งครั้ง + แบ่งยา)

เข้าจากไหนประวัติการรักษา (EMR) → เปิดเคส → โอนเคส/แบ่งใช้
1
เลือกโหมด "แบ่งใช้" (ไม่ใช่ "ย้ายทั้งเคส") — คอร์สยังเป็นของเจ้าของเดิม แบ่งไปเฉพาะจำนวนครั้งที่ระบุ
2
ใส่จำนวนครั้งที่แบ่ง แล้วติ๊กยา/เวชภัณฑ์ที่จะแบ่งไปด้วย
3
เลือก HN ปลายทาง แล้วใส่หมายเหตุว่าแบ่งเพราะอะไร (จะขึ้นใต้ชื่อคอร์สทั้งสองฝั่ง)
4
ยืนยัน — เคสฝั่งผู้รับจะสร้างที่ยอด ฿0 เพราะเงินยังอยู่กับคนที่จ่ายจริง ส่วนค่ามือจะไปตามคนที่ลงมือทำ
คอร์สแบบนับเป็น "หน่วยยา" (เช่น ulthera / thermage ที่คิดเป็นช็อต) ก็แบ่งได้เหมือนกัน — ระบุจำนวนหน่วยแทนจำนวนครั้ง
📋 EMR (ประวัติการรักษา)

วิธีค้นในประวัติ แล้วให้ไทม์ไลน์เหลือเฉพาะที่ค้น

เข้าจากไหนประวัติการรักษา (EMR) → ช่อง "ค้นหาประวัติการซื้อ/การทำ"
1
พิมพ์ชื่อบริการหรือสินค้า เช่น Botox, ฟิลเลอร์
2
รายการประวัติด้านล่างจะเหลือเฉพาะครั้งที่มีรายการนั้น ไม่ต้องไล่หาเอง
3
ล้างช่องค้นหาเพื่อกลับไปดูประวัติทั้งหมด
ครั้งที่ย้ายมาจากระบบเดิมจะมีป้าย "ข้อมูลเก่า" กำกับไว้ ให้แยกออกได้ทันทีว่าอันไหนคีย์ในระบบนี้ อันไหนยกมา · หัวข้อแต่ละครั้งจะขึ้นชื่อแพทย์ผู้ทำเท่านั้น ไม่ใช่ชื่อคนเปิดเคส
📋 EMR (ประวัติการรักษา)

วิธีดูวงเงินลูกค้าและเครื่องมือลูกค้าจากในหน้าเคส

เข้าจากไหนประวัติการรักษา (EMR) → เปิดเคส (ดูแถบบนหัวเคส)
1
วงเงินคงเหลือของลูกค้าแสดงอยู่บนหัวเคส ไม่ต้องออกไปหน้าลูกค้า
2
กดที่วงเงินเพื่อดูประวัติการเติม/การใช้ และรายละเอียดบัตร
3
ปุ่มเครื่องมือลูกค้า (โน้ต / แพ้ยา / ความยินยอม / ใบเสร็จ) อยู่ในแถบเดียวกัน
👥 ลูกค้า & CRM

วิธีใช้สมุดโน้ตลูกค้า (โน้ตสั้น + อัลบั้มรูป)

เข้าจากไหนลูกค้า → เปิดการ์ดลูกค้า → สมุดโน้ต
1
สมุดโน้ตแยกจาก EMR — ใช้จดเรื่องทั่วไปที่ไม่ใช่ข้อมูลการรักษา เช่น นิสัยลูกค้า ข้อตกลงราคา
2
สร้างอัลบั้มรูปได้หลายอัลบั้มต่อคน กดที่รูปเพื่อดูเต็มจอ
3
คอร์สคงเหลือของลูกค้าแสดงบนการ์ดตั้งแต่เปิด ไม่ต้องกดเข้าไปดูอีกชั้น
👥 ลูกค้า & CRM

วิธีค้นลูกค้าด้วยชื่อเล่นและด้วย HN

เข้าจากไหนช่องค้นหาลูกค้า (ขายหน้าร้าน / นัดหมาย / EMR)
1
พิมพ์ชื่อเล่นได้เลย ระบบค้นเจอและแสดงชื่อเล่นในวงเล็บต่อท้ายชื่อจริง
2
พิมพ์ HN ให้ครบทั้งเลข จะได้ผลลัพธ์คนเดียวตรงตัว ไม่ปนคนที่เลขคล้ายกัน
3
ในช่องผู้ให้บริการของหน้านัดหมาย พิมพ์ค้นชื่อคุณหมอได้เช่นกัน ไม่ต้องเลื่อนหา
🛒 ขายหน้าร้าน (POS)

วิธีหาของในหน้าขาย และสร้าง/คัดลอกบริการ-แพ็คเกจจากหน้าขายเลย

เข้าจากไหนขายหน้าร้าน (POS) → แถบตัวกรองเหนือรายการสินค้า
1
กรองด้วยช่วงราคา หรือวันที่สร้างรายการ เพื่อหาของที่ต้องการเร็วขึ้น
2
กดปุ่มสร้างรายการใหม่ เพื่อเพิ่มบริการหรือแพ็คเกจโดยไม่ต้องออกจากหน้าขาย
3
หรือกดปุ่มคัดลอกบนการ์ดของเดิม แล้วแก้รายละเอียดในหน้าต่างที่เด้งขึ้นก่อนบันทึก
4
ในตะกร้า พิมพ์จำนวนเองได้โดยตรง ไม่ต้องกดเพิ่มทีละครั้ง
📊 รายงาน & การเงิน

วิธีอ่านรายงานค่ามือ / คอมมิชชั่น และดูว่าเงินมาจากเคสไหน

เข้าจากไหนรายงาน → ค่ามือ / คอมมิชชั่น
1
แท็บ "รายงานค่ามือ (ต่อหัตถการ)" = ไล่ดูรายเคส · แท็บ "สรุปคอมมิชชั่น" = ยอดรวมรายคน
2
ในหน้าสรุป กดที่ชื่อพนักงานเพื่อกางดูว่ายอดของเขามาจากเคสไหน เคสละเท่าไร
3
ช่องค่ามือของเคสที่มีหลายคนช่วย จะแยกให้เห็นว่าหมอได้เท่าไร ผู้ช่วยได้เท่าไร
4
เลือกกรองเฉพาะคนใดคนหนึ่งได้ที่แถบด้านบน — ยอดที่เห็นจะเหลือเฉพาะส่วนของคนนั้น
5
กด "บันทึกการจ่ายเงิน" ที่แถวของแต่ละคนเมื่อจ่ายจริงแล้ว
ค่ามือนับตามวันที่ทำหัตถการ ไม่ใช่วันที่ออกบิล — เคสที่คีย์บิลย้อนหลังจึงยังอยู่ในเดือนที่ทำงานจริง
📊 รายงาน & การเงิน

วิธีตั้งอัตราค่ามือหมอและค่ามือผู้ช่วยให้ระบบคิดเอง

เข้าจากไหนตั้งค่า → ต้นทุน & ค่าตอบแทน
1
แท็บ "ค่ามือหมอ" — ตั้งเป็นเปอร์เซ็นต์ของยอดขาย (เช่น 10%) ระบุว่าจ่ายให้บทบาทแพทย์
2
แท็บ "ค่าคอมมิชชัน" — ตั้งเป็นจำนวนบาทตายตัวต่อครั้ง ผูกกับบริการทีละรายการ
3
แท็บ "ต้นทุนอื่น" — ค่าโสหุ้ย ค่าการตลาด ที่หักตามสัดส่วนยอดขาย (ไม่ใช่เงินที่จ่ายให้คน)
4
กฎที่ตั้งไว้จะมีผลกับบิลที่ปิด "หลังจากนั้น" ของเก่าที่บันทึกไว้แล้วไม่ถูกแก้
หมอที่จ่ายเป็นรายชั่วโมง: ตั้งเรตต่อชั่วโมงรายคนกับจำนวนชั่วโมงต่อวันได้ ระบบจะรวม "ค่าชั่วโมง" เข้ากับค่ามือเป็นยอดเดียวในรายงานค่ามือ และถ้ามีใบ OT ที่อนุมัติแล้วในระบบ HR จะบวกให้อัตโนมัติ (เรตรายคนตั้งให้โดยผู้ดูแลระบบ)
ชื่อบริการต้องตรงกับที่ตั้งอัตราไว้ ระบบจึงคิดให้ได้ — ถ้าคลินิกพิมพ์ชื่อเดียวกันหลายแบบ ให้รวมเหลือชื่อเดียวในหน้าจัดการบริการก่อน
📊 รายงาน & การเงิน

วิธีใช้รายงานเคสติดป้าย (รีวิว / KOL)

เข้าจากไหนรายงาน → เคสติดป้าย (รีวิว/KOL)
1
ติดป้ายที่โน้ตของเคสตอนทำงาน เช่น "รีวิวฟิลเลอร์" เพื่อให้ย้อนกลับมาหาได้
2
ในรายงาน เลือกช่วงวันที่ แล้วดูรายชื่อ + HN + วันที่ทำ ของทุกเคสที่ติดป้ายนั้น
3
มีคอลัมน์แพทย์ผู้ทำ ให้เช็คได้ว่าเป็นเคสรีวิวของหมอท่านไหน
📅 นัดหมาย

วิธี Export ตารางนัดเป็นไฟล์ Excel สำหรับพิมพ์

เข้าจากไหนการจอง → ปุ่ม Export ตารางนัด
1
เลือกช่วงวันที่ที่ต้องการบนหน้าจอก่อน — ไฟล์จะออกตามช่วงที่เห็นอยู่
2
กด Export จะได้ไฟล์ .xlsx ที่แยกเป็นชีตละวัน จัดหน้าพร้อมพิมพ์

🧾 ใบเสร็จรับเงิน (ลูกค้าเห็น)

ฉีดฟิลเลอร์ใต้ตา 9,900.-
ยอดสุทธิ 9,900.-
ขอบคุณที่ใช้บริการ
ถ้าเวชภัณฑ์โผล่บนใบเสร็จ = ตั้งประเภทสินค้าผิด — แจ้งผู้ดูแลระบบ อย่าลบรายการเอง สต็อกจะเพี้ยน