คู่มือใช้งาน 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) และรูปแบบเมนูตามตำแหน่งให้อัตโนมัติ ก่อนพาเข้าหน้าแรก
- ไม่มีปุ่ม "ลืมรหัสผ่าน" บนหน้านี้ — ต้องแจ้งผู้ดูแลระบบให้ตั้งรหัสใหม่ให้
ผิดพลาด = กล่องข้อความสีแดงใต้หัวเรื่อง · ระหว่างรอปุ่มขึ้น "Signing in..." · ไม่มีปุ่ม "ลืมรหัสผ่าน"
แถบด้านบน (ทุกหน้าหลัง login)
| ส่วนประกอบ | อธิบาย |
|---|---|
| ปุ่มซ่อน/แสดงเมนูซ้าย | ไอคอนมุมซ้ายบน (จอ desktop/iPad แนวนอนเท่านั้น) — hover ขึ้น title "ซ่อนเมนู (เพิ่มพื้นที่ทำงาน)" ตอนเมนูเปิด / "แสดงเมนู" ตอนซ่อน ค่าที่เลือกจำไว้ในเครื่อง ไม่ต้องตั้งใหม่ทุกครั้ง |
| สลับสาขา | dropdown ป้าย "สาขา:" — แสดงเฉพาะหน้าหลังบ้านเท่านั้น (รายงาน/AR/บัญชี/HR ฯลฯ) หน้า "งานประจำวัน" (แดชบอร์ด/การจอง/POS/EMR/ลูกค้า/สินค้า-บริการ-การตลาด/สต็อก-จัดซื้อ) จะไม่มีตัวเลือกนี้เพราะพนักงานทำงานอยู่สาขาเดียว มีตัวเลือก "ทุกสาขา" ให้เฉพาะ admin/super_admin — เปลี่ยนสาขาแล้วข้อมูลที่ค้างอยู่บนจอ (ตะกร้า/ตัวกรอง) จะถูกล้างทันทีเพื่อกันข้อมูลข้ามสาขาปน คลินิกโหมดสาขาเดียว (mono) จะไม่แสดงตัวเลือกนี้เลย |
| ป้ายเครือข่ายคลินิก | ไอคอนวงกลมจุดสี — แสดงเฉพาะเมื่อคลินิกนี้ "จับคู่" กับคลินิกอื่นในเครือข่ายแล้วเท่านั้น จุดเขียว = เชื่อมต่อปกติ, จุดเหลือง = รอยืนยัน/เชื่อมต่อไม่ได้ตอนนี้ — hover (หรือแตะบนมือถือ) ดูรายละเอียด/คลิกไปหน้าตั้งค่าเครือข่ายคลินิก |
| กระดิ่งแจ้งเตือน | ดูรายละเอียดด้านล่าง |
| ป้ายตำแหน่ง | ข้อความชื่อบทบาท (ผู้ดูแลระบบ/พนักงาน/หมอ/พยาบาล/ฝ่ายบุคคล/ลูกค้า) ต่อจากกระดิ่ง |
| ผู้ใช้ + ออกจากระบบ | มุมล่างสุดของเมนูซ้าย — รูปโปรไฟล์ (หรืออักษรย่อชื่อ-นามสกุลถ้าไม่มีรูป), ชื่อ-นามสกุล, ป้ายตำแหน่ง และปุ่มไอคอนประตูออก (title "ออกจากระบบ") กดแล้วพากลับ /login |
item ที่เปิดอยู่ = แถบไล่สีม่วง #7c3aed → cyan #22d3ee ตัวอักษรขาว · item อื่น = ตัวอักษรเทา
"สาขา:" เห็นเฉพาะหน้าหลังบ้าน · "ทุกสาขา" เฉพาะ admin · จุดเขียว = เครือข่ายเชื่อมปกติ (เหลือง=รอยืนยัน)
สมชาย จันทร์
ผู้ดูแลระบบ
รูปโปรไฟล์ (หรืออักษรย่อ) + ชื่อ + ป้ายตำแหน่ง + ปุ่มประตูออก (title "ออกจากระบบ") → กลับ /login
มุมซ้ายบน (desktop/iPad แนวนอน) · ค่าที่เลือกจำไว้ในเครื่อง ไม่ต้องตั้งใหม่ทุกครั้ง
เมนูซ้าย / การนำทาง
ทุกหน้าจอมีแถบเมนูซ้ายเป็นตัวนำทางหลัก จัดเป็น 5 กลุ่ม (หัวข้อสีเทาตัวเล็ก): งานประจำวัน · สินค้า/บริการ/การตลาด · สต็อก/จัดซื้อ · หลังบ้าน · ตั้งค่า/ระบบ — แต่ละบทบาทเห็นเฉพาะกลุ่ม/รายการที่มีสิทธิ์ (เมนูของแต่ละบทบาทอยู่ในแถบนี้) เมนูที่กำลังเปิดอยู่เป็นแถบไล่สี ม่วง→ฟ้า (gradient) ตัวอักษรขาว
งานประจำวัน
สินค้า/บริการ/การตลาด
สต็อก/จัดซื้อ
หลังบ้าน
ตั้งค่า/ระบบ
5 กลุ่มคั่นด้วยเส้น + หัวข้อสีเทา · ไอคอน lucide จริง · item ที่เปิดอยู่ = แถบไล่สีม่วง #7c3aed → ฟ้า #22d3ee ตัวอักษรขาว · "รวมการอนุมัติ" มี badge ส้ม · เห็นเฉพาะเมนูที่บทบาทมีสิทธิ์
กระดิ่งแจ้งเตือน
- ตัวเลขวงกลมสีแดงมุมขวาบนกระดิ่ง = จำนวนยังไม่อ่าน (ดึงข้อมูลใหม่ทุก 60 วินาที และเมื่อกลับมาโฟกัสหน้าต่าง)
- คลิกกระดิ่ง → เปิด dropdown แสดง 8 รายการล่าสุด คลิกรายการใดรายการหนึ่ง = ทำเครื่องหมายอ่านแล้ว + พาไปหน้าที่เกี่ยวข้องอัตโนมัติ (ถ้ารายการนั้นมีลิงก์)
- ปุ่ม "อ่านทั้งหมด" มุมขวาบนของ dropdown (ปิดใช้งานเมื่อไม่มีรายการค้าง)
- ปุ่ม "ดูทั้งหมด" ท้าย dropdown → พาไปหน้ารายการแจ้งเตือนแบบเต็ม — คนละหน้ากับเมนู "การแจ้งเตือนของฉัน" (ซึ่งเป็นหน้าตั้งค่าว่าจะรับแจ้งเตือนเรื่องอะไรบ้าง ไม่ใช่หน้ารายการ)
- ไม่มีรายการเลย → ไอคอนกล่องเปล่า + ข้อความ "ยังไม่มีการแจ้งเตือน"
แสดง 8 รายการล่าสุด · รายการยังไม่อ่าน = จุดม่วง + พื้นม่วงอ่อน · คลิก = อ่านแล้ว + พาไปหน้าที่เกี่ยว
ปรับขนาดตัวอักษร
- อยู่ที่หน้า แดชบอร์ด (หน้าแรกหลัง login) มุมขวาบนของหัวข้อ ไม่ได้อยู่ในแถบบนแบบทุกหน้า
- ปุ่ม − / + ปรับทีละ 5% (ช่วง 80–150%) หรือลากแถบเลื่อน, ปุ่ม "คืนค่าดั้งเดิม" กลับ 100%
- มีผลกับทุกหน้าจอทันทีและจำค่าไว้ในเครื่อง (ไม่ต้องตั้งซ้ำทุกครั้งที่เข้าระบบ)
ปรับทีละ 5% (ช่วง 80–150%) · มีผลทุกหน้าทันที + จำค่าในเครื่อง · อยู่มุมขวาบนของหน้าแดชบอร์ดเท่านั้น
/login ทันที
เจ้าหน้าที่ต้อนรับ
เมนูของคุณ
งานหลัก 5 เรื่อง: (1) อ่านแดชบอร์ดตอนเริ่มกะ (2) จองนัด/จัดการนัดหมาย (3) เปิดเคสให้ลูกค้าที่ POS รวมถึงสแกนบัตรประชาชน (4) เช็คอินลูกค้าที่มาถึงคลินิกแล้วส่งต่อเข้า EMR (5) ค้นหา/เพิ่ม/ดูโปรไฟล์ลูกค้าในเมนูลูกค้า
1. แดชบอร์ด — หน้าแรกที่เจอทุกครั้งที่ล็อกอิน
หัวจอทักทายตามช่วงเวลา พร้อมปุ่ม รีเฟรช มุมขวาบนไว้โหลดตัวเลขทุกการ์ดใหม่พร้อมกัน มีการ์ดสรุปวันนี้ 4 ใบ:
| การ์ด (สี) | บอกอะไร |
|---|---|
| รายได้วันนี้ (เขียว) | ยอดเงิน ฿ สุทธิที่เก็บได้วันนี้ + จำนวนบิล |
| นัดหมาย (น้ำเงิน) | จำนวนนัดวันนี้ทั้งหมด + แยก "รอ N • เสร็จ N" |
| เคสที่ดำเนินการ (ม่วง) | จำนวนเคสที่หมอ/พยาบาลกำลังดูแลอยู่ ยังไม่ปิดบิล |
| ลูกค้าทั้งหมด (ส้ม) | จำนวนลูกค้าที่ลงทะเบียนสะสมในระบบ |
การ์ด 4 ใบ (สีเขียว/ฟ้า/ม่วง/ส้ม) — ตัวเลขสรุปวันนี้ กดปุ่มรีเฟรชมุมขวาบนโหลดใหม่พร้อมกัน
ถ้าตัวเลขรายได้ดึงมาไม่สำเร็จ จะมีแถบเหลืองอำพันเตือนว่า "ตัวเลขรายได้ที่แสดงอาจไม่ถูกต้อง..." — เห็นแถบนี้แล้วอย่าเพิ่งใช้ตัวเลขไปสรุปยอดให้หัวหน้า
เปิดกะเช้า เจอแถบเตือนสีเหลืองใต้การ์ดรายได้
- เข้าระบบตอนเช้า แดชบอร์ดขึ้นแถบเหลืองอำพัน "ตัวเลขรายได้ที่แสดงอาจไม่ถูกต้อง..."
- กดปุ่ม รีเฟรช มุมขวาบน
- ถ้าแถบเตือนหายไปและตัวเลขเปลี่ยน → ใช้ตัวเลขใหม่ได้ตามปกติ
- ถ้ากดรีเฟรชแล้วแถบยังอยู่ → อย่ารายงานยอดรายได้จากหน้านี้ต่อผู้จัดการ ให้แจ้งแอดมิน/ไอทีแทน
ส่วนแจ้งเตือน โผล่เฉพาะตอนมีเรื่องจริงต้องระวัง คลิกที่การ์ดพาไปหน้าที่เกี่ยวข้องทันที: หมดสต็อก (แดง)/สต็อกต่ำ (เหลือง)/ใกล้หมดอายุ (ส้ม) → ไปหน้าคลังสินค้า, วงเงินใกล้หมดอายุ (ม่วง) → ไปรายงานวงเงิน (เห็นเฉพาะแอดมิน/เซลที่มีสิทธิ์ดูรายงานวงเงิน)
ลูกค้าถามหายาที่เพิ่งซื้อไปว่าเหลือสต็อกไหม แล้วเจอการ์ด "สต็อกต่ำ" สีเหลืองพอดี
- เห็นการ์ดแจ้งเตือน "สต็อกต่ำ" ขึ้นในหน้าแดชบอร์ด
- คลิกที่การ์ด → ระบบพาไปหน้าคลังสินค้าโดยตรง กรองมาให้เฉพาะรายการที่ใกล้หมดแล้ว
- เช็คจำนวนคงเหลือของรายการที่ลูกค้าถาม แจ้งลูกค้าตามจริง — ถ้าจะสั่งเพิ่มให้ประสานฝ่ายที่ดูแลคลังต่อ
ตาราง 3 คอลัมน์กลางหน้า: นัดหมายวันนี้ (สูงสุด 6 รายการ, ปุ่ม "ดูทั้งหมด"→หน้าการจอง), ยอดขายล่าสุด (ใบเสร็จล่าสุด 5 ใบ, ปุ่ม "ขายใหม่"→หน้า POS), เคสที่กำลังดำเนินการ (สูงสุด 5 เคส, ปุ่ม "ดูทั้งหมด"→หน้า EMR)
เมนูด่วน (แถบล่างสุดของแดชบอร์ด)
ปุ่มไอคอนกลม 7 ปุ่มลัดไปหน้าที่ใช้บ่อย: ขายใหม่ (POS) · จองนัด · เคสใหม่ (EMR) · เพิ่มลูกค้า · คลังสินค้า · จัดการบริการ · ดูรายงาน
ลูกค้าโทรมาขอเพิ่มชื่อเข้าระบบก่อนมาถึงคลินิก
- กดปุ่ม "เพิ่มลูกค้า" ที่เมนูด่วน — ปุ่มนี้พาไปที่หน้ารายชื่อลูกค้า ไม่ได้เปิดฟอร์มกรอกให้ทันที
- ถึงหน้ารายชื่อลูกค้าแล้วต้องกดปุ่ม + อีกครั้งเพื่อเปิดฟอร์มลงทะเบียน (ดูหัวข้อ 5.2)
- กรอกข้อมูลจากที่ลูกค้าบอกทางโทรศัพท์ บันทึกแล้วนัดให้ลูกค้ามาถึงคลินิกพร้อม HN ที่ออกให้แล้ว
ทุกบทบาทเห็นแดชบอร์ดนี้เป็นหน้าแรกเหมือนกันหมด จุดต่างเดียวคือการ์ดแจ้งเตือน "วงเงินใกล้หมดอายุ" ที่โผล่เฉพาะผู้มีสิทธิ์ดูรายงานวงเงิน — ถ้าไม่เห็นการ์ดนี้ ไม่ใช่ระบบพัง แต่เป็นเพราะสิทธิ์ไม่ถึง
2. การจอง (Booking)
เข้าจากเมนูด่วนบนแดชบอร์ด หรือเมนูหลัก "การจอง" — สลับมุมมองที่ปุ่มมุมขวาบน:
| มุมมอง | เหมาะกับ | สิ่งที่เห็น |
|---|---|---|
| เดือน (ค่าเริ่มต้น) | ดูภาพรวมทั้งเดือน | ปฏิทินเต็มเดือน วันละสูงสุด 3 นัดเป็นแถบสี ถ้าเกินมีปุ่ม "+N เพิ่มเติม" |
| รายสัปดาห์ | ดูโหลดงาน 7 วันข้างหน้า | ตาราง 7 วัน วันละสูงสุด 4 นัด |
| รายวัน | จัดคิววันนี้/พรุ่งนี้แบบละเอียด | กริดช่วงเวลา 30 นาทีต่อช่อง สถานะ ว่าง(เขียว)/มีนัด(ฟ้า)/เต็ม(แดง)/ผ่านมาแล้ว(เทา) |
| รายการ (agenda) | หานัดรอยืนยันจาก LINE/ค้นหาเฉพาะราย | แยก "รอยืนยัน (จาก LINE)" การ์ดเหลือง กับ "นัดทั้งหมด" จัดกลุ่มตามวันที่ |
หมออยากรู้ว่าวันนี้มีคิวว่างช่วงบ่ายไหม ก่อนรับ walk-in เพิ่ม
- สลับมุมมองเป็น "รายวัน" แล้วเลื่อนไปวันนี้
- ดูกริดช่วงเวลาบ่าย — ช่องขึ้น "ว่าง · 2/4" (เขียว) = ยังรับได้อีก 2 คิว
- ช่อง "เต็ม" (แดง/ชมพู) กดไม่ได้ ต้องเลือกช่วงอื่น
- ถ้าหมอไม่ออกตรวจวันนี้ ทั้งวันจะขึ้น "ผู้ให้บริการไม่ออกตรวจในวันนี้" แทนกริด — แจ้งลูกค้าเลื่อนไปวันอื่น
2.2 จองนัดใหม่ — คนไข้ในระบบ vs Walk-in
กด "จองนัดใหม่" เปิดฟอร์ม 9 ขั้น: ประเภทผู้ป่วย (คนไข้ในระบบ/Walk-in) → ชื่อบริการ → วันที่-เวลา → ระยะเวลา (ค่าเริ่มต้น 30 นาที) → ช่องทางการจอง → ผู้ให้บริการ (เลือกได้) → ห้อง (เลือกได้) → หมายเหตุ → กด "จองนัด"
ลูกค้าเก่าโทรมาขอนัด ระบบมีชื่ออยู่แล้ว
- เลือก "คนไข้ในระบบ" (ค่าเริ่มต้น) → พิมพ์ชื่อ/เบอร์ในช่องค้นหา live
- คลิกเลือกชื่อที่ถูกต้อง (เช็คเบอร์โทรประกอบถ้าชื่อซ้ำ) — เมื่อเลือกแล้วกลายเป็นการ์ดสีเขียวยืนยัน มีปุ่ม X ยกเลิกถ้าเลือกผิด
- กรอกบริการ เลือกวันเวลาจากตารางช่วงเวลาว่าง (ถ้าเลือกผู้ให้บริการไว้แล้ว ตารางกรองเฉพาะคิวของหมอคนนั้น)
- กด "จองนัด" — สำเร็จแล้วนัดขึ้นในปฏิทินทันที
ลูกค้าใหม่โทรมาขอนัดล่วงหน้า ยังไม่เคยมาคลินิก
- สลับเป็น "ลูกค้า Walk-in" → กรอก "ชื่อลูกค้า Walk-in" (บังคับ), เบอร์โทร, อีเมล — ขั้นนี้ยังไม่สร้าง HN เป็นแค่ชื่อผูกกับนัดเฉยๆ
- กรอกบริการ/วันเวลาตามปกติ กด "จองนัด"
- ผลที่ตามมา: นัดนี้ยังไม่มีโปรไฟล์ลูกค้าในระบบ วันที่มาจริงกด "เช็คอิน" จะเจอ "เริ่มเคส EMR ไม่ได้ (No Customer Profile)" ต้องสร้างโปรไฟล์ลูกค้า/สแกนบัตรที่ POS ก่อน (ดู 2.6 และ 3)
จองไม่สำเร็จเพราะกรอกไม่ครบ — กดปุ่ม "จองนัด" ทั้งที่ยังไม่ได้เลือกลูกค้า/กรอกบริการ ระบบไม่บันทึกและขึ้นกรอบข้อความ error สีชมพูภายในฟอร์มทันที อ่านข้อความว่าขาดช่องไหน แก้แล้วกดจองนัดใหม่
2.3 เลื่อนนัด
เปิดจาก "รายละเอียดนัด" — ปุ่ม "เลือกเวลาใหม่" แสดงเมื่อสถานะเป็น รอดำเนินการ/จองแล้ว/ยืนยันแล้ว
ลูกค้าโทรมาขอเลื่อนนัดจากพรุ่งนี้เป็นสัปดาห์หน้า
- คลิกที่นัดในปฏิทิน → เปิด "รายละเอียดนัด" → กด "เลือกเวลาใหม่"
- เลือกวันที่ใหม่ + ช่วงเวลาจากตารางช่วงเวลาว่าง (แบบเดียวกับตอนจองใหม่)
- กด "ยืนยันเลื่อนนัด" — นัดเดิมหายจากช่องเวลาเก่า ไปโผล่ในช่องเวลาใหม่ทันที
2.4 ยกเลิกนัด + คืนเครดิต
ลูกค้าจ่ายมัดจำผ่าน LINE ไว้แล้ว แต่ขอยกเลิกนัด
- คลิกนัดของลูกค้า → กด "ยกเลิกนัด" → กรอกเหตุผล (ไม่บังคับ แต่ควรกรอก)
- นัดนี้มาจากระบบจอง/kiosk และชำระเงินไว้แล้ว ระบบขึ้นคำเตือนสีเหลืองอำพันว่าจะคืนเงินเป็นเครดิตลูกค้าอัตโนมัติ (ไม่ใช่คืนเงินสด)
- กด "ยกเลิกนัด" ยืนยัน — เครดิตเข้าบัญชีลูกค้า ใช้ตัดในบิลครั้งถัดไปได้ทันที (เช็คได้ที่โปรไฟล์ลูกค้า แท็บ "วงเงิน")
2.5 ยืนยันนัดหมายจาก LINE
ลูกค้าที่จองผ่าน LINE จะค้างสถานะ "รอดำเนินการ" จนกว่าคลินิกจะกดยืนยัน
สมหญิง ใจดี · ปรึกษาผิว
พรุ่งนี้ 10:30 · จองผ่าน LINE เมื่อคืน
มุมมอง "รายการ" มีกล่องเหลืองรอยืนยันด้านบนสุด · ไอคอนตา = ดูรายละเอียด · ไอคอนถูก = ยืนยันด่วน
เช็คนัดตอนเช้า เจอรายการ "รอยืนยัน (จาก LINE)" ค้างจากเมื่อคืน
- สลับมุมมอง "รายการ" — ส่วนบนสุดมีกล่องพื้นเหลือง "รอยืนยัน (จาก LINE)"
- กดปุ่มไอคอนตา (ดูรายละเอียด) เช็คว่าเวลา/บริการชนกับคิวที่มีอยู่หรือไม่
- ถ้าโอเค กดปุ่มไอคอนถูก (ยืนยันด่วน) หรือเข้าไปกดปุ่มเขียว "ยืนยันนัดหมาย" ในหน้าต่างรายละเอียด
- นัดเปลี่ยนเป็น "ยืนยันแล้ว" หายจากกล่องรอยืนยัน — ไม่สะดวกดูตอนนี้กด "ซ่อน/แสดง" ย่อกล่องไว้ได้ แต่รายการยังค้างรออยู่
2.6 เช็คอิน → เริ่มเคสผู้ป่วย
คลิกนัดหมายเปิด "รายละเอียดนัด" ส่วนล่างมีกล่อง "เริ่มเคสผู้ป่วย" (แสดงเมื่อสถานะ จองแล้ว/ยืนยันแล้ว/เช็คอินแล้ว/กำลังให้บริการ) เปลี่ยนหน้าตา 3 แบบตามสถานะลูกค้า
ลูกค้ามาถึงคลินิกตามนัดปกติ (มีโปรไฟล์ในระบบแล้ว) — เห็นกล่องสีม่วง "เริ่มเคสผู้ป่วย" พร้อมปุ่ม "เช็คอิน + เปิดเคส EMR" กดครั้งเดียว ระบบเช็คอินนัด เปิดเคส EMR ให้อัตโนมัติ แล้วพาไปหน้า EMR ของเคสนั้นทันที
walk-in ที่ยังไม่มีโปรไฟล์ในระบบมาถึงคลินิก
- เปิดรายละเอียดนัดของ walk-in คนนี้ (จองแบบ "ลูกค้า Walk-in")
- แทนที่จะเห็นปุ่มเช็คอิน กลับขึ้นกล่องเหลืองอำพัน "เริ่มเคส EMR ไม่ได้ (No Customer Profile)"
- แก้ไข: ต้องไปที่ POS สแกนบัตรประชาชนหรือกรอกฟอร์มสร้างลูกค้าใหม่ (หัวข้อ 3) เพื่อให้ได้ HN ก่อน
- เมื่อมีโปรไฟล์แล้ว กลับมาเปิดรายละเอียดนัดอีกครั้ง ปุ่มจะเปลี่ยนเป็น "เช็คอิน + เปิดเคส EMR" ตามปกติ
ลูกค้าเดินมาถามซ้ำว่าเคสเปิดหรือยัง — ถ้ามีคนเปิดเคสให้ไปแล้ว กล่องจะเปลี่ยนเป็นสีเขียว "สร้างเคสแล้ว" พร้อมเลขที่เคสและปุ่ม "ดูใน EMR" กดปุ่มนี้ไปดูสถานะได้เลย ไม่ต้องกดเช็คอินซ้ำ (กดซ้ำจะไม่เปิดเคสใหม่ทับของเดิม)
3. เปิดเคสที่ POS — ค้นหา/สแกนบัตร/สร้างลูกค้าใหม่
เข้าเมนู POS แท็บ "สร้างเคส + ขาย" (ค่าเริ่มต้น) — กล่องแรกที่ต้องทำคือเลือกลูกค้า ก่อนเลือกบริการได้
3.1 ค้นหาลูกค้าที่มี HN อยู่แล้ว
ช่องค้นหา "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *" — ต้องพิมพ์อย่างน้อย 3 ตัวอักษรระบบถึงเริ่มค้นหา
สมหญิง ใจดี
พิมพ์แล้วรายชื่อเด้งใต้ช่อง (ป้าย HN ม่วง + เบอร์โทร) — คลิกเลือกกลายเป็นการ์ดยืนยัน · ปุ่มสแกน (ฟ้า) และถ่ายรูป (ม่วง) ค้นหา/สร้าง HN อัตโนมัติ
ลูกค้าเดินเข้ามาบอกชื่อ
- พิมพ์ชื่อในช่องค้นหา (≥3 ตัวอักษร) พิมพ์น้อยกว่านั้นระบบเตือน "กรอกอย่างน้อย 3 ตัวอักษรเพื่อค้นหา"
- รอ 0.3 วิ ระบบค้นหาอัตโนมัติ ขึ้นรายชื่อพร้อมป้าย "HN: {เลข}" และเบอร์โทรกำกับ (เช็คเบอร์ประกอบถ้าชื่อซ้ำ)
- คลิกเลือกชื่อที่ถูกต้อง — ช่องค้นหาเปลี่ยนเป็นการ์ดยืนยันสีเขียว มีปุ่ม X เปลี่ยนลูกค้าใหม่ถ้าเลือกผิด
- ขึ้น "ไม่พบลูกค้าที่ตรงกับ..." = ยังไม่เคยมีในระบบ ต้องสแกนบัตรหรือสร้างใหม่ (3.2-3.3)
- ขึ้นเหลืองอำพัน "พบลูกค้าแต่ยังไม่มี HN..." = เลือกจากรายการตรงๆ ไม่ได้ ต้องสแกนบัตรเพื่อสร้าง HN ก่อน
3.2 สแกน/ถ่ายรูปบัตรประชาชน
ปุ่ม "สแกนบัตรประชาชน" (เครื่องอ่านชิป/แอป Companion บนแท็บเล็ต) และ "ถ่ายรูป/อัปโหลดบัตร" (ไม่มีเครื่องอ่าน หรือลูกค้าต่างชาติ — ใช้ได้ทั้งบัตรไทยและพาสปอร์ต) ระบบค้นหาลูกค้าอัตโนมัติด้วยตรรกะเดียวกัน 3 แบบ:
ลูกค้าเก่าที่มีบัตรผูกกับ HN อยู่แล้ว — เสียบบัตร อ่านสำเร็จ เลขบัตรตรงกับลูกค้าที่มี HN อยู่แล้ว ระบบผูกลูกค้าให้ทันที ขึ้นข้อความเขียว "พบลูกค้าในระบบ — {ชื่อ} (HN: {เลข})" ไม่ต้องทำอะไรต่อ ไปเลือกบริการได้เลย
ลูกค้าทำบัตรประชาชนใหม่ เลขบัตรเปลี่ยน แต่เคยมาคลินิกแล้ว
- สแกนบัตร → ไม่พบเลขบัตรนี้ในระบบ แต่ชื่อตรงกับลูกค้าเดิมที่เคยลงทะเบียนไว้
- ขึ้นกล่องเหลืองอำพัน "ไม่พบเลขบัตรนี้ในระบบ — พบลูกค้าที่ชื่อตรงกัน โปรดยืนยันว่าใช่คนเดียวกันหรือไม่" พร้อมชื่อ/HN/เบอร์โทร
- เช็คกับลูกค้าตรงหน้า (ถามเบอร์โทร/HN เดิมประกอบ) — ถ้าใช่ กดปุ่มเขียว "ใช่คนนี้" → ผูกลูกค้าคนนั้นทันที พร้อมบันทึกเลขบัตรใหม่เข้าโปรไฟล์อัตโนมัติ
- ถ้าไม่ใช่คนเดียวกัน กดปุ่ม "ไม่ใช่ — สร้าง HN ใหม่" แทน — ไปเปิดฟอร์มสร้างลูกค้าใหม่ (3.3) กันข้อมูลชนกัน
ลูกค้าใหม่จริงๆ ไม่เคยมาคลินิกเลย — สแกนบัตร/ถ่ายรูปแล้วไม่พบทั้งเลขบัตรและชื่อ ระบบเปิดฟอร์มสร้างลูกค้าใหม่อัตโนมัติ พร้อมข้อความ "ไม่พบในระบบ — กรอกข้อมูลเพื่อสร้าง HN ใหม่" และดึงชื่อ/เลขบัตร/วันเกิดจากบัตรมาใส่ในฟอร์มให้แล้ว (ยังแก้ไขได้ทุกช่องถ้า OCR อ่านผิด) ตรวจข้อมูลแล้วทำต่อตามหัวข้อ 3.3
เครื่องอ่านบัตรไม่ยอมอ่าน
- เสียบบัตรแล้วรอ ขึ้นข้อความแดง เช่น "อ่านเลขบัตรไม่สำเร็จ — เสียบบัตรให้แน่นแล้วลองใหม่" หรือ "เบราว์เซอร์นี้อ่านบัตรไม่ได้ — ต้องใช้ Chrome/Edge (ไม่รองรับ Safari)"
- กด "ลองสแกนใหม่" — ถ้ายังไม่ได้ เปลี่ยนไปใช้ "ถ่ายรูป/อัปโหลดบัตร" แทน
- ถ่ายรูปแล้วอ่านไม่ชัด (ความมั่นใจต่ำ) ระบบเตือนเป็น % ความมั่นใจ ให้ตรวจข้อมูลละเอียดขึ้นก่อนกด "ยืนยัน"
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 เดินเข้ามาโดยไม่ได้จองล่วงหน้าเลย
- ไม่ต้องหาในหน้าการจอง — ไปที่เมนู POS ตรงๆ แท็บ "สร้างเคส + ขาย"
- ลองค้นหาชื่อ/เบอร์โทรก่อน (3.1) เผื่อเคยมาคลินิกแล้ว
- ถ้าหาไม่เจอ สแกนบัตร/ถ่ายรูปบัตร (3.2) ให้ระบบเช็คอีกชั้นว่าไม่ใช่คนเดิมที่สะกดชื่อไม่ตรง
- ถ้ายืนยันเป็นคนใหม่จริง กรอกฟอร์มสร้างลูกค้า (3.3) ออก HN ให้
- เลือกบริการในแคตตาล็อกด้านล่าง กดเข้าสู่ขั้นตอนชำระเงิน/เปิดเคสตามปกติของ POS
5. ลูกค้า — ค้นหา / เพิ่ม / ดูโปรไฟล์
เมนู "ลูกค้า (CRM)" — ทะเบียนกลางของลูกค้าทุกคน ค้นหาด้วยชื่อ/เบอร์โทร/เลข OPD, ชิปกรองด่วน (ทั้งหมด/VIP/Platinum/Gold/Silver/Bronze/มาใช้บริการล่าสุด 30 วัน) และปุ่ม "ตัวกรอง" ขั้นสูง
หัวหน้าขอรายชื่อลูกค้า VIP ที่เกิดเดือนนี้เพื่อส่งโปรโมชั่นวันเกิด
- กดชิป "VIP" ก่อน (กรองเฉพาะ Gold+Platinum)
- กด "ตัวกรอง" เปิดแผงขั้นสูง เลือก "เกิดเดือนนี้"
- รายการที่ตรงทั้งสองเงื่อนไขขึ้นเป็นชิปแสดงตัวกรองที่ใช้อยู่ (กดกากบาทเอาออกทีละอัน หรือ "ล้างตัวกรอง")
- ถ้ามีสิทธิ์ จะมีปุ่ม "ส่งออก"/"ส่ง SMS (N)" ใช้ต่อได้ทันที (สิทธิ์นี้มักเป็นของแอดมิน/เซล)
5.2 เพิ่มลูกค้าใหม่จากเมนูลูกค้าโดยตรง
ปุ่ม + ข้างช่องค้นหา (ไม่ใช่การสแกนบัตร ทางนี้กรอกมือล้วน เหมาะกับรับข้อมูลทางโทรศัพท์)
บังคับกรอก ชื่อ/ชื่อเล่น/เบอร์โทร · HN ค่าเริ่มต้น Auto (ล็อกแก้ไม่ได้) · บันทึกแล้วผูกเข้าเคสทันที
ลูกค้าโทรมาสมัครสมาชิกล่วงหน้าก่อนมาถึงคลินิก
- กดปุ่ม + มุมขวาของช่องค้นหา → เปิดฟอร์มเดียวกับตอนสแกนบัตรไม่เจอที่ POS (3.3)
- กรอกชื่อ/ชื่อเล่น/เบอร์โทร (บังคับ) HN ปล่อย Auto ตามปกติ
- กด "บันทึกข้อมูล" — ได้ HN ทันที แจ้งเลข HN ให้ลูกค้าทางโทรศัพท์เพื่อใช้ตอนมาถึงคลินิกจริง
5.3 ดูโปรไฟล์ลูกค้า
คลิกแถวลูกค้า เปิดหน้าต่างโปรไฟล์ 3 แท็บ: ภาพรวม (ข้อมูลส่วนตัว/ที่อยู่/ป้ายกำกับ/การแพทย์/ยอดใช้จ่าย/แต้มสะสม) · วงเงิน (บัตร/กระเป๋าเงินสมาชิกทั้งหมด) · ประวัติ (ตารางเครดิตเข้า-ออกทุกรายการ) — ปุ่ม "ลบลูกค้า" โผล่เฉพาะผู้มีสิทธิ์เท่านั้น (ปกติไม่ใช่เจ้าหน้าที่ต้อนรับทั่วไป)
เปิดที่แท็บ "ภาพรวม" เสมอ · กดการ์ดหรือแท็บ "วงเงิน" ดูบัตร/ยอดคงเหลือต่อใบ · "ประวัติ" = เครดิตเข้า-ออก
ลูกค้าถามยอดแต้มสะสม/วงเงินคงเหลือของตัวเอง — เปิดโปรไฟล์อยู่ที่แท็บ "ภาพรวม" (เริ่มต้นเสมอ) เห็นแต้มสะสมและการ์ด "รวมวงเงิน" กดที่การ์ดหรือคลิกแท็บ "วงเงิน" โดยตรงดูรายละเอียดจำนวนบัตร/ยอดคงเหลือต่อใบ ถ้าอยากรู้ที่มาเครดิตล่าสุด คลิกแท็บ "ประวัติ" ดูตารางวันที่/รายการ/จำนวน/ยอดคงเหลือ
ลูกค้าย้ายบ้าน ขอแก้ที่อยู่/เบอร์โทรใหม่ — เปิดโปรไฟล์ กด "แก้ไข" มุมล่างขวา เปิดฟอร์มเดียวกับตอนสร้างใหม่แต่ข้อมูลเดิมเติมมาให้ครบ (โหมดแก้ไข ช่อง HN เป็นช่องกรอกธรรมดา ไม่มีสวิตช์ Auto/Manual) แก้แท็บ "ที่อยู่" หรือ "ทั่วไป" แล้วกด "บันทึกข้อมูล" — อัปเดตทันที ไม่กระทบ HN หรือประวัติการซื้อเดิม
สรุปสิทธิ์ที่บทบาทนี้ใช้ได้ / ใช้ไม่ได้
| การทำงาน | เจ้าหน้าที่ต้อนรับใช้ได้ไหม |
|---|---|
| อ่านแดชบอร์ด, เมนูด่วน | ได้ — ยกเว้นการ์ด "วงเงินใกล้หมดอายุ" ที่บางระบบจำกัดเฉพาะแอดมิน/เซล |
| จองนัด/เลื่อนนัด/ยกเลิกนัด/ยืนยันนัดจาก LINE/เช็คอิน+เปิดเคส | ได้ทั้งหมด |
| แก้ไขเวลาทำการ/วันหยุด/ช่วงเวลาปิด/ความจุห้อง | ไม่ได้ — เห็นได้แต่แก้ไม่ได้ (เฉพาะแอดมิน) |
| ค้นหาลูกค้า, สแกน/ถ่ายรูปบัตร, สร้างลูกค้าใหม่ | ได้ทั้งหมด |
| ดูโปรไฟล์ลูกค้า, แก้ไขข้อมูล, ดูประวัติการรักษา/ซื้อ/สิทธิ์แพ็กเกจ/เครดิต | ได้ทั้งหมด |
| ลบลูกค้า | ปกติไม่ได้ — ต้องมีสิทธิ์เฉพาะ (ปุ่มไม่โผล่ถ้าไม่มีสิทธิ์) |
| ส่งออกรายชื่อ / ส่ง SMS แจ้งเตือนกลุ่มลูกค้า | ขึ้นกับสิทธิ์ที่คลินิกตั้งไว้ (ปกติเป็นของแอดมิน/เซล) |
ฝ่ายขาย (Sale)
เมนูของคุณ
ทุก feature ในหัวข้อนี้มีกล่อง "กรณีตัวอย่าง" อธิบายทีละขั้นตอน ทางเลือก เงื่อนไข/สิทธิ์ และผลลัพธ์ ให้ฝ่ายขายอ่านแล้วทำตามได้ทันทีโดยไม่ต้องเดา
1. เลือกลูกค้า / สแกนบัตรประชาชน
หน้า "สร้างเคส + ขาย" → กล่อง "สร้างเคสใหม่" → ช่อง "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *" (ต้องเลือกลูกค้าก่อนเปิดเคสเสมอ — POS ไม่ออกเลข HN เอง) พิมพ์อย่างน้อย 3 ตัวอักษร ระบบค้นหาอัตโนมัติหลัง 0.3 วิ หรือกดปุ่ม "สแกนบัตรประชาชน" (เครื่องอ่านชิป/แอป Companion) หรือ "ถ่ายรูป/อัปโหลดบัตร" (OCR — บัตรไทยและพาสปอร์ต)
สมหญิง ใจดี
เลือกลูกค้าก่อนเปิดเคสเสมอ · คลิกผลค้นหา → กลายเป็นการ์ดยืนยัน · ปุ่มสแกน (ฟ้า)/ถ่ายรูป (ม่วง) หาไม่พบ = เปิดฟอร์มสร้าง HN ใหม่
ลูกค้าเก่ามี HN อยู่แล้ว พิมพ์ค้นหาตรงๆ
- พิมพ์ "0812345678" ในช่องค้นหา
- ระบบเจอ 1 รายชื่อ พร้อมป้าย "HN: OPD-00123" — คลิกเลือก
- ช่องค้นหาเปลี่ยนเป็นการ์ดยืนยันชื่อ+HN+เบอร์โทร พร้อมปุ่ม X (เปลี่ยนลูกค้า)
- ผลลัพธ์: ลูกค้าถูกผูกเข้าเคส พร้อมไปขั้นเลือกบริการต่อ
ลูกค้าใหม่ ไม่เคยมีในระบบ ไม่มีบัตร
- พิมพ์ชื่อ/เบอร์แล้วไม่พบผลลัพธ์ — ขึ้น "ไม่พบลูกค้าที่ตรงกับ..."
- กดปุ่ม "สแกนบัตรประชาชน" หรือ "ถ่ายรูป/อัปโหลดบัตร" แทนการค้นหาชื่อ
- อ่านบัตรสำเร็จแต่ไม่พบทั้งเลขบัตรและชื่อในระบบ → เปิดฟอร์ม "ลงทะเบียนลูกค้าใหม่" อัตโนมัติ พร้อมข้อความ "ไม่พบในระบบ — กรอกข้อมูลเพื่อสร้าง HN ใหม่ ({ชื่อจากบัตร})"
- ตรวจ/เติมช่องบังคับ (ชื่อ, ชื่อเล่น, เบอร์โทร) — HN โหมด Auto อยู่แล้ว
- กด "บันทึกข้อมูล" → ลูกค้าใหม่ถูกสร้างและผูกเข้าเคสทันที ไม่ต้องค้นหาซ้ำ
ลูกค้าเก่าแต่ CID ในบัตรไม่ตรงกับที่บันทึกไว้ (ข้อมูลเก่าไม่มีเลขบัตร)
- สแกนบัตร → ไม่พบเลขบัตรในระบบ แต่ชื่อ-นามสกุลตรงกับลูกค้าเดิม
- ขึ้นกล่องเหลืองอำพัน "ไม่พบเลขบัตรนี้ในระบบ — พบลูกค้าที่ชื่อตรงกัน โปรดยืนยันว่าใช่คนเดียวกันหรือไม่" พร้อมรายชื่อผู้สมัคร
- ทางเลือก ก: กดปุ่มเขียว "ใช่คนนี้" → ผูกลูกค้าคนนั้นเข้าเคส + บันทึกเลขบัตรเข้าโปรไฟล์อัตโนมัติ (กันสร้าง HN ซ้ำ)
- ทางเลือก ข: กด "ไม่ใช่ — สร้าง HN ใหม่" → ไปเปิดฟอร์มลงทะเบียนใหม่ (เหมือนกรณี 2)
2. เลือกบริการ/แพ็กเกจ (การ์ด/ค้นหา/หมวด)
แคตตาล็อกแบบการ์ด ขายเฉพาะบริการและคอร์ส/แพ็กเกจ (ไม่มีสินค้าปลีก) มีแถบค้นหา "ค้นหาบริการ / คอร์ส…" (ค้นได้ทั้งชื่อและราคา), ปุ่มกรอง ทั้งหมด/บริการ/แพ็คเกจ, ชิปหมวดหมู่, ปุ่มสลับขนาดการ์ด
โบท็อกซ์หน้าผาก
Filler Program 3 ครั้ง
แตะการ์ด 1 ครั้ง = เข้าตะกร้าทันที · แพ็กเกจมีป้าย "คอร์ส" มุมซ้ายบน · บริการที่มีสินค้าสิ้นเปลืองผูกไว้ขึ้นบรรทัดเขียว
ขายบริการเดี่ยวให้ลูกค้าเดินเข้ามา — แตะการ์ด "โบท็อกซ์หน้าผาก" 1 ครั้ง เข้าตะกร้าทันที ไม่มีขั้นยืนยัน แตะซ้ำเพิ่มจำนวนเป็น 2 อัตโนมัติ ถ้าบริการมีสินค้าสิ้นเปลืองผูกไว้ (เช่นเข็ม/ถุงมือ) จะดึงเข้าตะกร้าเป็นรายการย่อยสีเขียวอ่อนอัตโนมัติ ราคา ฿0 (เป็นต้นทุน ไม่ใช่ยอดขาย)
ลูกค้าจำชื่อบริการไม่ได้ จำได้แต่ราคา — พิมพ์ "1500" ในช่องค้นหา (ค้นได้ทั้งชื่อและราคา) ระบบกรองการ์ดที่ราคา 1,500 บาทมาแสดง เลือกที่ตรงกับที่ลูกค้าอธิบาย
ขายคอร์ส/แพ็กเกจ — กดปุ่มกรอง "แพ็คเกจ" หรือชิป "คอร์ส/แพ็กเกจ" การ์ดแพ็กเกจมีป้าย "คอร์ส" มุมซ้ายบนแยกจากบริการเดี่ยวชัดเจน แตะเพื่อเพิ่มลงตะกร้าเหมือนบริการ
3. ใช้สิทธิ์แพ็กเกจ (Redeem — ตัดใช้สิทธิ์ ไม่คิดเงิน)
แสดงเฉพาะเมื่อเลือกลูกค้าแล้ว — กล่อง "สิทธิ์แพ็คเกจของลูกค้า" กด "ใช้สิทธิ์" เพื่อเปิด OPD ตัดใช้สิทธิ์ (ไม่คิดเงิน) แล้วให้หมอลงผลการรักษา
Filler Program
เหลือ 3 ครั้งกด "ใช้สิทธิ์" → เปิด OPD ตัดสิทธิ์มูลค่า ฿0 (ไม่ผ่านหน้าชำระเงิน) → พาเข้า EMR ให้หมอลงผล
ลูกค้ามีคอร์ส Filler ค้างอยู่ 3 ครั้ง มาใช้สิทธิ์วันนี้
- เลือกลูกค้าแล้ว ระบบแสดงการ์ดแพ็กเกจ "Filler Program" พร้อมยอดคงเหลือ "เหลือ 3 ครั้ง"
- ถ้าสิทธิ์เป็นแบบ "เลือกได้" (มีตัวเลือกยี่ห้อ/บริเวณ) ต้องเลือกจากดรอปดาวน์ "— เลือกรายการที่ใช้ —" ก่อน ปุ่มใช้สิทธิ์จะกดไม่ได้จนกว่าจะเลือก
- กด "ใช้สิทธิ์" → กล่องยืนยัน "เปิด OPD เพื่อตัดใช้สิทธิ์ 'Filler 1cc' 1 ครั้ง (ไม่คิดเงิน) ใช่หรือไม่?" → ยืนยัน
- ระบบเปิดเคส OPD มูลค่า ฿0 ตัดสิทธิ์อัตโนมัติ (เหลือ 2 ครั้ง) พาไปหน้า EMR ให้หมอลงผลการรักษาต่อทันที — ไม่ต้องผ่านหน้าชำระเงินเลย
- ถ้าลูกค้าไม่มีสิทธิ์เหลือเลย กล่องขึ้น "ลูกค้ารายนี้ไม่มีสิทธิ์คงเหลือ" แทนรายการ
4. ผู้ขาย (Sale) + การขออนุมัติ
ป้าย "ผู้ขาย (Sale)" ค่าเริ่มต้น = ผู้เข้าสู่ระบบ — ดรอปดาวน์เลือกพนักงานที่ canSell เป็นจริงเท่านั้น (สิทธิ์ pos.sale.create) กำหนดผู้ขายคนอื่นแบบมีผลทันที (ไม่ต้องรออนุมัติ) ต้องมี rbac.permission.manage หรือเป็น super_admin
พนักงานขายทั่วไปกำหนดผู้ขายเป็นคนอื่น แต่ไม่มีสิทธิ์
- แคชเชียร์ A (ไม่มีสิทธิ์
rbac.permission.manage) เปิดบิลให้ลูกค้า แต่ต้องการให้ยอดขายไปนับที่ B (เซลล์ที่ปิดการขายจริง) - A เปลี่ยนดรอปดาวน์ "ผู้ขาย (Sale)" จากตัวเองเป็น "B"
- ระบบขึ้นทันที: "⏳ ต้องรออนุมัติ — เคสจะเปิดในชื่อของคุณก่อน และระบบจะส่งคำขอเปลี่ยนผู้ขายให้ผู้มีสิทธิ์อนุมัติ" — ยิงคำขอไปเซิร์ฟเวอร์ทันทีตอนเลือก ไม่ต้องรอกดชำระเงิน
- ข้อความเปลี่ยนเป็น "⏳ ส่งคำขอเปลี่ยนผู้ขายเป็น B แล้ว — รออนุมัติที่เมนู 'รวมการอนุมัติ'"
- A เปิดเคส+ขายต่อได้ตามปกติ — บิลจะเปิดในชื่อ A ไปก่อน (ยอดขาย/คอมมิชชั่นยังคงอยู่ที่ A จนกว่าจะอนุมัติ)
- ผู้มีสิทธิ์อนุมัติ (ค่าเริ่มต้น = super_admin เท่านั้น — เจ้าของคลินิกเพิ่มบทบาทอื่นให้อนุมัติได้) เข้าเมนู "รวมการอนุมัติ" แท็บ "เปลี่ยนเซลล์" กด อนุมัติ/ไม่อนุมัติ — คนแรกที่กดชนะ (race ถูกต้อง)
- ถ้าอนุมัติ: หน้า POS ของ A (ยังเปิดค้างอยู่ ไม่ต้องรีเฟรช) ตรวจพบผลอัตโนมัติภายใน 5 วินาที ขึ้น toast เขียว "อนุมัติแล้ว — ผู้ขายของบิลนี้เป็น B"
- ถ้าไม่อนุมัติ: A เห็น toast แดง และดรอปดาวน์เด้งกลับเป็นชื่อ A เองอัตโนมัติ
- ทางเลือก: ถ้า A เปลี่ยนใจกดกลับมาเป็นตัวเองก่อนมีการตัดสิน คำขอที่ส่งไปถูกยกเลิกอัตโนมัติ
- Edge case: A ปิดบิลทิ้งไว้ไม่กดชำระเงินเลย คำขอที่ค้างไม่ถูกผูกกับเคสจะถูกเก็บกวาดอัตโนมัติ (TTL)
Manager กำหนดผู้ขายเป็นคนอื่นตรงๆ — ผู้จัดการที่มีสิทธิ์ rbac.permission.manage เลือกดรอปดาวน์ผู้ขายเป็น "C" — มีผลทันที ไม่ต้องส่งคำขอ ขึ้น "✓ บันทึกผู้ขายเป็น C แล้ว — จะมีผลทันทีที่เปิดเคส"
5. ผู้ให้บริการรายการนี้ — หรือข้ามไป assign ที่ EMR ทีหลัง
หน้า "สร้างเคส + ขาย" ไม่มีขั้นตอนมอบหมายหมอ/พยาบาล/ผู้ช่วยระดับเคสอีกต่อไป (ย้ายออกตามคำสั่ง CTO) — เลือกได้ 2 ทาง: ก) เลือกตอนขายที่ POS (แถบพับเก็บ "ผู้ให้บริการรายการนี้" ใต้แต่ละรายการ — มีผลทันทีไม่ต้องอนุมัติ) ข) ข้ามไปกำหนดที่หน้า EMR ของเคสนั้น
หมอ = เลือกได้คนเดียว (ฟ้า) · พยาบาล/ผู้ช่วย = เลือกได้หลายคน (ชมพู/ม่วง) · พับเก็บจะเห็นสรุปสั้นๆ เช่น "หมอ: นพ.สมชาย · พยาบาล: น้องมิ้นท์"
เลือกหมอ/พยาบาล/ผู้ช่วยต่อรายการเลยที่ POS
- ในตะกร้ามีรายการ "ฉีดฟิลเลอร์ใต้ตา" — กดขยายแถบ "ผู้ให้บริการรายการนี้" (ปิดอยู่โดยค่าเริ่มต้น)
- เลือกหมอ 1 คนจาก "เลือกหมอ" (เลือกได้คนเดียว เลือกใหม่แทนที่คนเดิม) พิมพ์ค้นหาชื่อในกล่องที่เด้งขึ้น
- เลือกพยาบาล/ผู้ช่วยเพิ่มได้หลายคนจาก "เลือกพยาบาล"/"เลือกผู้ช่วย"
- การเลือกมีผลทันที ไม่ต้องรออนุมัติ — พับแถบเก็บจะเห็นสรุปสั้นๆ เช่น "หมอ: นพ.สมชาย · พยาบาล: น้องมิ้นท์"
- ถ้าบิลมี 2 บริการโดยหมอคนละคน กำหนดต่อบรรทัดแยกกันได้ — บิลเดียวส่งค่าคอมมิชชั่นแยกไปหมอแต่ละคนตามรายการที่ผูกไว้
ไม่เลือกใครเลย ข้ามไป assign ที่ EMR — เก็บเงินให้ลูกค้าโดยไม่แตะแถบ แถบยังพับเก็บอยู่ แสดงสรุป "ตามทีมงานเคส" สีเทา ปิดบิล → เคสเปิด (หรือค้างที่ "เคสรอปิด") หมอ/พยาบาลไปเปิดเคสนั้นที่หน้า EMR แล้วกำหนดทีมผู้ดูแลเองตอนลงบันทึกการรักษา — ไม่กระทบยอดขายหรือบิลที่ปิดไปแล้ว
6. ส่วนลด / ค่าธรรมเนียม / แก้ราคาแมนนวล
ฉีดฟิลเลอร์ใต้ตา
฿5,999 × 1 ราคาหลัก ฿5,999
ค่าปรึกษาแพทย์
฿500 × 1
แต่ละแถว: ชื่อ + ราคา×จำนวน + ปุ่ม −/+/ลบ · รายการย่อยสินค้าสิ้นเปลืองสีเขียว ฿0 · แถบ "ผู้ให้บริการ" · แถวจากเคส (ม่วง) ปรับจำนวนไม่ได้ · ยอดรวม/ค่าธรรมเนียม/ยอดสุทธิ + ปุ่ม "ชำระเงิน"
6.1 ค่าธรรมเนียม (ไม่ใช่ VAT)
ดรอปดาวน์เหนือยอดรวม: ไม่คิดค่าธรรมเนียม (0%) / 3% / 5% / 7% / 10% / กำหนดเอง
ลูกค้าจ่ายบัตรเครดิต คลินิกคิดค่าธรรมเนียมบัตร 3% — เลือก "3%" ก่อนกดชำระเงิน แถวสรุปยอดอัปเดตทันที "ยอดรวม: ฿5,999", "ค่าธรรมเนียม (3%): ฿180", "ยอดสุทธิ: ฿6,179" — ยอดที่ส่งไปเครื่องรูดบัตรเป็นยอดสุทธิรวมค่าธรรมเนียมแล้วเท่านั้น (sync ลงเซิร์ฟเวอร์ก่อนส่งเข้าเครื่องเสมอ)
6.2 แก้ไขราคาแมนนวลต่อรายการ
เฉพาะรายการบริการที่มาจากเคสเดิม (เคสรอปิด) — มีลิงก์ "แก้ราคา" ข้างราคา
ลูกค้าประจำขอส่วนลดพิเศษเฉพาะรายการเดียว
- ดึงเคสรอปิดเข้าตะกร้า เจอรายการ "IV Drip Vitamin C" ราคา 2,500 บาท
- กด "แก้ราคา" → เปิด "แก้ไขราคาแมนนวล"
- กรอก "ราคาใหม่ (บาท)" = 2,000 และ "เหตุผล *" (บังคับ) — ไม่กรอกเหตุผลปุ่มบันทึกกดไม่ได้
- กด "บันทึกราคา" → ราคาในตะกร้าเปลี่ยนเป็น 2,000 แต่ "ราคาหลัก ฿2,500" ยังแสดงคู่กันเสมอ พร้อมป้าย "แก้ราคา" สีเหลืองอำพัน
- ระบบบันทึกประวัติ (ใครแก้/เมื่อไหร่/ราคาเดิม-ใหม่/เหตุผล) ไว้ตรวจสอบย้อนหลัง
6.3 แก้ไขยอดสุทธิทั้งบิล (เฉพาะแอดมิน)
ปัดเศษยอดทั้งบิลให้ลูกค้าโดยไม่แก้ราคาทีละรายการ — บิลรวม 6,830 ลูกค้าขอปัดเป็น 6,800 เฉพาะแอดมินเห็นลิงก์ "แก้ไขยอดสุทธิ" ใต้ยอดสุทธิ (พนักงานขายทั่วไปไม่เห็น — ต้องเรียกแอดมินมาทำแทน) กรอกยอดใหม่+เหตุผล (บังคับ) → บันทึก → ยอดเดิมแสดงขีดฆ่าคู่กับยอดใหม่เสมอ
7. รูปแบบการชำระ (เต็ม/บางส่วน/มัดจำ/เข้ารับบริการก่อน)
กด "ชำระเงิน" → "รูปแบบการชำระ" (แสดงเฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ — ไม่เปิดจะบังคับชำระเต็มจำนวนเสมอ)
ชิปที่เลือกอยู่ = กรอบ+ตัวอักษรม่วง พื้นม่วงอ่อน
ชำระเต็มจำนวน (ปกติที่สุด) — ลูกค้าจ่ายครบ กด "ชำระเต็มจำนวน" → เลือกช่องทาง → ยืนยัน → บิลปิดทันที ไม่มีอะไรค้าง
ชำระบางส่วน (ลูกค้ามีเงินไม่พอวันนี้)
- ต้องการจ่ายก่อน 3,000 จาก 5,000 บาท กด "ชำระบางส่วน"
- กรอก "ยอดที่ชำระตอนนี้ *" = 3,000 (มีลิงก์ลัด "ครึ่งหนึ่ง")
- ระบบคำนวณ "คงเหลือไปเคสรอชำระ: ฿2,000" ให้อัตโนมัติ
- ยืนยัน → เคสไปอยู่แท็บ "เคสรอปิด" พร้อมป้าย "ชำระแล้ว ฿3,000 / รวม ฿5,000" รอเก็บส่วนที่เหลือครั้งหน้า
เข้ารับบริการก่อน (ยังไม่เก็บเงินเลย) — กด "เข้ารับบริการก่อน" ไม่มีช่องเงินให้กรอกเลย ขึ้นข้อความ "เข้ารับบริการก่อน — ยังไม่ชำระเงิน / ยอดทั้งหมด ฿{X} จะถูกบันทึกเป็นยอดค้างชำระ..." ยืนยัน → ยอดทั้งบิลไปค้างที่ "เคสรอปิด" ทั้งจำนวน
มัดจำ (ลูกค้าจองคิว/นัดล่วงหน้า)
- ลูกค้าจอง Laser 10,000 บาท ล่วงหน้า 1 สัปดาห์ ต้องการวางมัดจำก่อน กด "มัดจำ"
- เงื่อนไข: ต้องเป็นลูกค้าที่เป็นสมาชิกเท่านั้น — ใช้กับ Walk-in ไม่ได้
- กรอก "ยอดมัดจำที่รับตอนนี้ *" = 3,000 (ต้องน้อยกว่ายอดบิลเต็มเสมอ)
- ระบบขึ้น "มัดจำแล้ว ฿3,000 — เหลือเก็บภายหลัง ฿7,000" พร้อมหมายเหตุ "เงินมัดจำจะบันทึกเป็นเครดิตมัดจำผูก HN + ออกใบเสร็จมัดจำ · เคสติดสถานะ 'มัดจำแล้ว'"
- ยืนยัน → เคสไปอยู่แท็บ "เคสมัดจำ" (ไม่ใช่ "เคสรอปิด") พร้อมป้าย "มัดจำ ฿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 ได้เหมือนกัน เพื่อมอบหมายผู้ทำ (แถบ "ผู้ทำ" ในแท็บ "รายการ & บิล") หรือปิดเคส/ส่งไปชำระเงิน เอง
ฉีดฟิลเลอร์ใต้ตา
฿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 เห็นได้เป็นกรณีพิเศษ |
แคชเชียร์
เมนูของคุณ
งานหลัก 6 อย่าง: (1) เปิดเคสขายให้ลูกค้า (2) เก็บเงิน — เลือกรูปแบบชำระ+ช่องทาง+ยืนยัน (3) ดึงเคสที่ค้างชำระมาปิดบิล (4) ออกใบเสร็จ/พิมพ์ซ้ำ/ส่งใบเสร็จ (5) พักบิลเมื่อลูกค้ายังตัดสินใจไม่ได้ (6) ยกเลิก/คืนเงิน — ทุกการแก้ราคา/ยกเลิก/คืนเงินต้องกรอกเหตุผลทุกครั้ง ระบบบันทึกผู้ทำ+เวลา+ค่าก่อน-หลังไว้ตรวจสอบย้อนหลัง
1. เปิดเคส + ขาย — ผูกลูกค้าให้ถูกคน
แท็บ "สร้างเคส + ขาย" → ช่อง "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *"
สมหญิง ใจดี
พิมพ์ ≥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 ระดับหลังอ่านบัตรสำเร็จ
- พบเลขบัตรตรงลูกค้าเดิม → ผูกให้ทันที ขึ้นเขียว "พบลูกค้าในระบบ" — จบ
- ไม่พบเลขบัตร แต่ชื่อตรงกับลูกค้าเดิม → กล่องเหลืองอำพันยืนยันทีละคนที่ชื่อใกล้เคียง ปุ่ม "ใช่คนนี้" (ผูกให้+บันทึกเลขบัตรอัตโนมัติ) หรือ "ไม่ใช่ — สร้าง HN ใหม่" — ต้องเช็คเบอร์โทร/รูปหน้าให้แน่ใจก่อนกด "ใช่คนนี้" เสมอ เพราะถ้าผูกผิดคน ประวัติ/สิทธิ์แพ็กเกจของอีกคนจะถูกใช้ผิด
- ไม่พบเลย → เปิดฟอร์มสร้างลูกค้าใหม่อัตโนมัติ (1.6) พร้อมข้อมูลจากบัตรกรอกให้แล้ว
- อ่านไม่สำเร็จ → ข้อความแดง + ปุ่ม "ลองสแกนใหม่" (เสียบบัตรไม่แน่น, เบราว์เซอร์ไม่รองรับ WebUSB ต้อง Chrome/Edge ไม่ใช่ Safari, หรือลืมเปิดแอป Companion)
1.4 ลูกค้าใหม่ ไม่มีเครื่องอ่านชิป หรือชาวต่างชาติ: กด "ถ่ายรูป/อัปโหลดบัตร" (ใช้ได้ทั้งบัตรไทยและพาสปอร์ต) — ระบบ OCR อ่านให้ ขึ้นกล่องม่วงให้ตรวจสอบ ถ้าความชัดต่ำมีคำเตือน+% ความมั่นใจ ตรวจทุกช่องก่อนกดยืนยันเสมอ โดยเฉพาะเลขบัตร/พาสปอร์ตกับวันเกิด (พาสปอร์ตดูจากแถบ MRZ 2 บรรทัดล่างสุด)
pos-เคาน์เตอร์1) → กรอก API base + Token (ขอจากแอดมิน) + Device ID เดียวกัน → เสียบเครื่องอ่านบัตร USB-OTG → กด Start — ถ้าลืมทำขั้นนี้ กดสแกนจะค้างที่ "รอเสียบบัตรที่เครื่องอ่าน..." ให้ตรวจว่าเปิดแอปอยู่และ Device ID ตรงกันหรือยัง1.6 ลงทะเบียนลูกค้าใหม่: ฟอร์มแบ่งแท็บ ข้อมูลทั่วไป/ส่วนตัว/ที่อยู่/การแพทย์/ฉุกเฉิน/การติดต่อ — บังคับกรอก ชื่อ/ชื่อเล่น/เบอร์โทร ที่เหลือกรอกทีหลังได้ HN ค่าเริ่มต้น Auto (ล็อกแก้ไม่ได้) สลับ Manual เฉพาะกรณีต้องใช้เลขที่กำหนดเอง กด "บันทึกข้อมูล" → ผูกเข้าเคสที่กำลังเปิดทันที
2. เลือกบริการ/แพ็กเกจใส่ตะกร้า
POS ขายบริการและคอร์ส/แพ็กเกจเท่านั้น — ไม่มีสินค้าปลีกวางขายตรง สินค้าที่เห็นในตะกร้ามาจากเคสเดิม หรือเป็นสินค้าสิ้นเปลืองที่ผูกมากับบริการอัตโนมัติเท่านั้น แตะการ์ด 1 ครั้ง = ใส่ตะกร้าทันที แตะซ้ำ = เพิ่มจำนวน
ฉีดฟิลเลอร์ 1cc
คอร์สโบท็อกซ์ 4 ครั้ง
แตะการ์ด 1 ครั้ง = เข้าตะกร้า · บรรทัด "สินค้าสิ้นเปลือง N รายการ" (เขียว) ดึงเข้าตะกร้าราคา ฿0 อัตโนมัติ
ขายบริการที่มีสินค้าสิ้นเปลืองผูกอยู่ (เช่น ฉีดฟิลเลอร์ 1cc) — การ์ดบริการมีข้อความ "สินค้าสิ้นเปลือง {N} รายการ" ใต้ชื่อ แตะการ์ดบริการตามปกติ ระบบดึงสินค้าสิ้นเปลือง (เข็ม/ถุงมือ/สำลี) เข้าตะกร้าเป็นรายการย่อยอัตโนมัติ ราคา ฿0 (รายการต้นทุนสำหรับหักสต็อก ไม่ใช่ยอดขายที่คิดเงินลูกค้า) ไม่ต้องเพิ่มเองและไม่ต้องอธิบายลูกค้าว่าทำไมมีบรรทัดราคา 0 บาท
ถ้าสาขายังไม่มีบริการเลย ขึ้น "ยังไม่มีบริการในสาขานี้" — ต้องให้แอดมินตั้งค่าบริการให้สาขาก่อน ไม่ใช่ปัญหาที่แคชเชียร์แก้เองได้
3. ใช้สิทธิ์แพ็กเกจ (Redeem)
คอร์สโบท็อกซ์
เหลือ 3 ครั้งนับครั้งกด "ใช้สิทธิ์" ตรงๆ · นับหน่วย (cc/ml) กรอกจำนวนก่อน · ป้าย "เลือกได้" ต้องเลือกดรอปดาวน์ก่อนปุ่มถึงกดได้
ลูกค้าซื้อคอร์สโบท็อกซ์ 4 ครั้งไว้ มาทำครั้งที่ 2
- หาแพ็กเกจของลูกค้าในกล่อง "สิทธิ์แพ็คเกจของลูกค้า" (แสดง "เหลือ {จำนวน}{หน่วย}")
- สิทธิ์นับครั้งกด "ใช้สิทธิ์" ตรงๆ (ครั้งละ 1) — นับหน่วย (cc/ml) กรอกจำนวนก่อนแล้วกด "ใช้สิทธิ์ {จำนวน} {หน่วย}"
- กล่องยืนยัน "เปิด OPD เพื่อตัดใช้สิทธิ์... (ไม่คิดเงิน) ใช่หรือไม่?" → ยืนยัน
- ระบบเปิดเคส OPD ฿0 ตัดสิทธิ์อัตโนมัติ ไม่มีขั้นตอนชำระเงินให้ทำ พาไปหน้า EMR ให้หมอบันทึกผลการรักษาต่อ — งานแคชเชียร์จบตรงนี้
แพ็กเกจแบบเลือกได้ (ป้าย "เลือกได้") ต้องเลือกจากดรอปดาวน์ก่อนปุ่มใช้สิทธิ์จะกดได้ — ต้องถามลูกค้าให้ชัดก่อนกด เพราะเลือกแล้วตัดสิทธิ์ทันที แก้ทีหลังต้องไปหน้ายกเลิก/คืนสิทธิ์แยก (13.2) — ถ้าลูกค้าไม่มีสิทธิ์เหลือเลยขึ้น "ลูกค้ารายนี้ไม่มีสิทธิ์คงเหลือ" ถ้าตรวจว่าเลือกลูกค้าถูก HN แล้วยังไม่เจอ ต้องแจ้งแอดมิน/หัวหน้าตรวจประวัติแพ็กเกจ
4. จัดการตะกร้า ("รายการขาย")
ปุ่ม −/+ ปรับจำนวน หรือถังขยะลบทั้งบรรทัด — ทำได้เฉพาะรายการที่เพิ่งเพิ่มในหน้านี้เอง รายการที่มาจากเคสรอปิดปรับ/ลบจากตะกร้าไม่ได้ (ปุ่มเทา ทูลทิป "ปรับจำนวนรายการจากเคสไม่ได้") ต้องแก้ที่หน้า EMR ของเคสนั้นแทน
ฉีดฟิลเลอร์ 1cc
฿5,999 × 1
รายการจากเคสรอปิด ปุ่ม −/+ เทากดไม่ได้ (แก้ที่ EMR) · สินค้าคุมล็อตมีช่อง "เลือก Lot" (ค่าเริ่มต้น FIFO)
แต่ละบรรทัดบริการมีแถบพับเก็บ "ผู้ให้บริการรายการนี้" เลือกหมอ(คนเดียว) + พยาบาล/ผู้ช่วย(หลายคน) — มีผลทันทีไม่ต้องรออนุมัติ ไม่เลือกใครแสดง "ตามทีมงานเคส"
"แก้ราคา" ใช้ได้เฉพาะบรรทัดจากเคสเดิม กรอก "ราคาใหม่ (บาท)" + "เหตุผล *" (บังคับ) — ราคาหลักเดิมยังโชว์คู่กันเสมอพร้อมป้ายเหลืองอำพัน ห้ามแก้ราคาโดยไม่กรอกเหตุผลที่ตรวจสอบได้จริง
สินค้าคุมล็อตมีช่อง "เลือก Lot:" ค่าเริ่มต้น "เลือกอัตโนมัติ (FIFO)" — ถ้าไม่มีล็อตพอสต็อกเลยขึ้นแดง "ไม่มีล็อตที่มีสต็อกเพียงพอ" เลือกไม่ได้ แจ้งคลังเติมสต็อกก่อน
5. ผู้ขาย (Sale) — ใครได้เครดิตยอดขายบิลนี้
ผู้มีสิทธิ์เลือกคนอื่น = มีผลทันที ("✓ บันทึกผู้ขายเป็น…") · แคชเชียร์ทั่วไป = ส่งคำขอรออนุมัติ เก็บเงินต่อได้เลย
ค่าเริ่มต้นคือผู้ล็อกอินเอง — มีสิทธิ์กำหนดเอง (หัวหน้ากะ/ 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 ส่งทีละรายการ รอเครื่องยืนยันอัตโนมัติ
รับหลายช่องทางในบิลเดียว: เงินสด 500 + QR ที่เหลือ (บิลยอด ฿1,200)
- แตะเลือกทั้ง "เงินสด" และ "QR พร้อมเพย์" พร้อมกัน (ปุ่มติดสว่างทั้งคู่)
- ช่องเงินสดกรอก "รับเงินสด" = 500
- ช่อง QR ระบบคำนวณส่วนที่เหลือให้เอง = 700 → กดสร้าง QR ให้ลูกค้าสแกน
- ปุ่มยืนยันกดไม่ได้จนกว่ายอดที่จัดสรรรวมทุกช่องทางจะครบยอดสุทธิพอดี — มีข้อความบอกว่าขาดอีกเท่าไหร่เสมอ
- ลูกค้าสแกนจ่ายสำเร็จ → ระบบตรวจสอบอัตโนมัติทุก 3 วิ → กดยืนยันปิดบิล
7.2 รับเงินสด เงินไม่พอ/ทอนเงิน: ช่อง "รับเงินสด" ปุ่มลัด "ใช้ยอดพอดี" — รับมากกว่ายอดคำนวณ "เงินทอน: ฿{X}" ให้อัตโนมัติ รับน้อยกว่ายอดขึ้น "เงินสดไม่พอ ขาดอีก ฿{X}" กดยืนยันไม่ได้จนครบ (หรือเพิ่มช่องทางอื่นมาช่วยแบบ multi-tender)
จ่ายผ่านเครื่อง Beam ทีละรายการ — ป้องกันจ่ายซ้ำเวลาเครื่องรับเงินสำเร็จแต่บันทึกบิลไม่สำเร็จ
- กด "ส่งไปที่เครื่อง" → "กำลังส่งไปที่เครื่อง…" → "รอลูกค้าชำระที่เครื่อง Beam — ระบบยืนยันอัตโนมัติ" (มีปุ่ม "ยกเลิก")
- สำเร็จ → "...ชำระที่เครื่องสำเร็จ ✓" → บันทึกลงบิลอัตโนมัติ → "ชำระและบันทึกแล้ว ✓" → รายการถัดไปถึงจะกดได้
กรณีพบยาก แต่สำคัญที่สุด — เครื่องรับเงินสำเร็จแต่บันทึกลงบิลไม่สำเร็จ (เช่นเน็ตหลุดตอนเครื่องส่งผลกลับมา) ระบบเตือน "เงินเข้าที่เครื่องแล้ว แต่บันทึกลงบิลไม่สำเร็จ" — ห้ามให้ลูกค้าชำระซ้ำ — กด "บันทึกอีกครั้ง" เท่านั้น ห้ามส่งรายการเดิมเข้าเครื่องซ้ำเด็ดขาด เพราะเงินอาจถูกตัดจากบัตรลูกค้าไปแล้วจริง กด "บันทึกอีกครั้ง" ให้ระบบไปเช็คผลจากเครื่องแล้วบันทึกเข้าบิลใหม่แทน ถ้ายังไม่สำเร็จอีก แจ้งหัวหน้า/แอดมินตรวจสอบกับ 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}" กำกับเสมอ (ระบบทำให้อัตโนมัติ) เพื่อแยกจากใบต้นฉบับ
10. เคสรอปิด
รวมเคสที่ยังไม่ปิดบิล จากกรณี 6.2/6.4 หรือหมอเปิดเคสจาก EMR/การจองแล้วยังไม่มาชำระ
ลูกค้าทำหัตถการเสร็จจากห้องหมอแล้ว เดินมาจ่ายเงินที่เคาน์เตอร์ — ค้นด้วยเลขเคสถ้ารู้ หรือดูจากการ์ด (หัวการ์ดคือชื่อบริการ/แพ็กเกจ ไม่ใช่เลขเคส) มี "ยอดค้างชำระ" ตัวใหญ่ คลิกที่การ์ด → รายการทั้งหมดถูกดึงเข้าตะกร้าอัตโนมัติ ลูกค้าถูกผูกให้ทันที กด "ชำระเงิน" ตามขั้นตอนปกติ — ป้ายค้าง: เหลือง ≥8 ชม., แดง ≥24 ชม. เคสค้างนานผิดปกติควรเช็คกับหัวหน้ากะ
เคสค้างนานเกินไป ลูกค้าไม่มาจ่ายและติดต่อไม่ได้: กด "ปิดเคส" บนการ์ด (ไม่ต้องเปิดเคสก็กดได้) — ปิดสถานะได้แม้ยังมียอดค้าง (มีกล่องยืนยันบอกยอดค้างก่อนปิด) ไม่ใช่วิธียกเลิกบิล — ถ้าจะยกเลิกบิลจริงต้องใช้ปุ่ม "ยกเลิก" (12.1) ไม่ใช่ปุ่ม "ปิดเคส"
อายุเคสรอปิด: เหลือง ≥8 ชม. · แดง ≥24 ชม. — ป้ายมัดจำ (ฟ้า) นับวันตั้งแต่รับมัดจำ
11. เคสมัดจำ
รวมเฉพาะเคสที่รับมัดจำไว้แล้ว (จาก 6.3) และยังมียอดค้าง — การ์ดมีเบอร์โทรกดโทรออกได้ทันที ป้าย "มัดจำ {N} วัน" (เหลือง ≥30 วัน, แดง ≥90 วัน) เคสสีแดงควรโทรตามก่อนเพราะเสี่ยงลูกค้าลืม/เปลี่ยนใจ ลูกค้ามาแล้วพร้อมจ่ายส่วนที่เหลือ กด "รับชำระต่อ" → ดึงเคสเข้าตะกร้า ไปแท็บ "เคสรอปิด" อัตโนมัติ
12. ยกเลิก (Void) และคืนเงิน (Refund) — 3 สถานการณ์ต่างกันโดยสิ้นเชิง
กดปุ่ม "ยกเลิกรายการ" ที่หัวจอ → "ยกเลิกรายการ (Void)" — ค้นด้วยชื่อ/รหัสเคส/HN หรือช่วงวันที่ (เคสที่จบบริการแล้วจะไม่แสดงในหน้านี้) ก่อนตัดสินใจ ให้ถามตัวเองก่อน: "เคสนี้ชำระเงินไปแล้วหรือยัง"
"ยกเลิก (ไม่คืนเงิน)" เป็นสีเทา+ไอคอนกุญแจ (เฉพาะแอดมิน) แคชเชียร์ทั่วไปกดไม่ได้
เคสยังไม่ชำระเงินเลย ลูกค้าเปลี่ยนใจไม่เอาแล้ว (= Void ธรรมดา)
- กรอก "เหตุผล *" (บังคับ)
- ถ้าเคสมีการตัดสิทธิ์แพ็กเกจไปแล้ว ติ๊ก "คืน Course Entitlement (ถ้ามี)" เพื่อคืนสิทธิ์ — ถ้าลืมติ๊ก ลูกค้าจะเสียสิทธิ์ไปฟรีๆ ต้องเช็คทุกครั้ง
- กด "ยกเลิกบิล" → ยืนยันอีกครั้ง (คำเตือน "การดำเนินการนี้ไม่สามารถยกเลิกได้") → "ยืนยัน ยกเลิกบิล"
- ถ้าเคสมีมัดจำค้างอยู่ ระบบคืนมัดจำเข้าเครดิตลูกค้าให้อัตโนมัติพร้อมกับยกเลิก
เคสชำระเงินไปแล้ว ลูกค้าขอคืน (= Refund — มีเงินต้องคืนจริง)
- คืนเต็มบิล: ระบบเลือกทุกรายการให้ครบอัตโนมัติ รายการที่เป็นสินค้าต้องเลือกสภาพ: "ซีล/ไม่ได้เปิด — คืนสต็อก" / "เปิดแล้ว — ตัดทิ้ง (Waste)" / "เสียหาย — ตัดทิ้ง (Waste)" — เลือกให้ตรงความจริง อย่าเลือก "คืนสต็อก" ถ้าซองเปิดแล้ว
- เลือก "วิธีคืนเงิน": เงินสด/บัตรเครดิต-เดบิต/เครดิตในระบบ — ไม่จำเป็นต้องตรงกับช่องทางที่จ่ายมาตอนแรก
- ถ้ามีคอมมิชชั่นพนักงานผูกอยู่ ติ๊ก "ยกเลิก Commission ของพนักงาน" ถ้าต้องการ
- กรอกเหตุผล (บังคับ) → "ดำเนินการคืนเงิน" → ยืนยัน → "คืนเงินสำเร็จ" พร้อมสรุปยอดคืนและรายการที่คืนสต็อก/ตัดทิ้ง
- คืนบางส่วน: ปรับ "จำนวนที่คืน:" ต่อรายการด้วย −/+ ได้เอง ปุ่ม "เลือกทั้งหมด"/"ยกเลิกทั้งหมด" ช่วยเลือกเร็ว จากนั้นทำขั้นตอนเดิมแต่คิดเงินคืนเฉพาะรายการที่เลือก
บิลชำระเงินแล้ว แต่คีย์ผิดคน (เงินถูกต้อง แต่ผูกกับลูกค้าผิดคน) — นี่ไม่ใช่การคืนเงิน วิธีแก้คือ "ยกเลิก (ไม่คืนเงิน)" ซึ่งแคชเชียร์ทั่วไปจะเห็นปุ่มนี้เป็นสีเทากดไม่ได้ พร้อมไอคอนกุญแจ (ทูลทิป "เฉพาะแอดมิน") ห้ามพยายามกดคืนเงินแล้วรับเงินใหม่เอง เพราะจะกลายเป็นคืนเงินจริงออกจากลิ้นชัก/บัญชีทั้งที่ไม่มีเงินไหลออกจริง ให้เรียกแอดมิน/หัวหน้ามาทำแทน:
- แอดมินกด "ยกเลิก (ไม่คืนเงิน)" → กล่องเตือนชัดเจน: "ไม่มีการคืนเงิน/เครดิต — ยอดเงินจะไม่ถูกคืนและไม่เข้าเครดิตลูกค้า / พนักงานต้องคีย์รับเงินใหม่ที่ POS ให้ถูกลูกค้า"
- กรอกเหตุผล + รหัสพนักงาน (PIN บังคับเสมอสำหรับบิลที่ชำระแล้ว) → ยืนยัน
- หลังจากนั้นแคชเชียร์ต้องเปิดเคสใหม่คีย์รับเงินให้ลูกค้าที่ถูกต้องแยกต่างหาก (เงินก้อนเดิมไม่ต้องรับซ้ำ) — ขั้นตอนนี้สับสนที่สุด ถ้าไม่แน่ใจให้ถามหัวหน้าก่อนเสมอ
ถ้าคลินิกตั้ง 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 |
หมอ
เมนูของคุณ
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 จึงเปิดมาที่แท็บ "เคสของฉัน" เป็นค่าเริ่มต้นเสมอ
ฉีดฟิลเลอร์ใต้ตา + อีก 1 รายการ
แท็บที่เลือก = ม่วงทึบ · การ์ดมีแถบสีซ้ายตามสถานะ · ป้าย "คุณ: หมอ" = บทบาทของคุณในเคสนี้
หมอเปิดแอปตอนเช้าบนมือถือ — จอเปิดมาที่แท็บ "เคสของฉัน (N)" ทันที เห็นเฉพาะเคสที่ตัวเองอยู่ในทีมผู้ทำ ถ้าวันนี้ยังไม่มีเคสมอบหมาย จอไม่ใช่หน้าว่างเปล่า แต่มีข้อความ "วันนี้ยังไม่มีเคสที่มอบหมายให้คุณ" พร้อมปุ่ม "ดูเคสทั้งหมด (N)" ให้สลับไปดูคิวรวมของคลินิกได้ทันที
1.3 เปิดเคส — ส่วนหัวคนไข้ + สัญญาณชีพ + แพ้ยา
เลือกคนไข้เห็นการ์ดส่วนหัว: ชื่อ+ชื่อเล่น+tier+HN, เพศ/อายุ/กรุ๊ปเลือด/มาล่าสุด, ป้ายแพ้ยาสีแดง (ถ้ามี), แถบสัญญาณชีพล่าสุด และปุ่ม "เปิด OPD"
ป้ายแพ้ยาสีแดงเด่นบนหัวการ์ด (เห็นก่อนกดเข้าเคส) · ทั้ง BT และหมอเห็นการ์ดนี้เหมือนกัน
หมอเปิดคนไข้ที่มีประวัติแพ้ยา — เห็นป้ายสีแดงเตือนแพ้ยาโชว์บนหัวการ์ดทันทีก่อนกดเข้าเคสด้วยซ้ำ ไม่ต้องเปิดแท็บ "ข้อมูลคนไข้" ไปหา ถ้ายังไม่เคยวัดสัญญาณชีพเลย แถบขึ้น "ยังไม่มีบันทึกสัญญาณชีพ — เปิด OPD เพื่อบันทึก" แทนช่องว่าง
1.4 หน้ารายละเอียดเคส — แท็บ "ชาร์ต & บันทึก"
แท็บที่เปิดอยู่ = ตัวอักษรม่วง + ขีดใต้ม่วง
สัญญาณชีพ
การ์ดแรก 6 ช่อง (น้ำหนัก/ส่วนสูง/BMI อัตโนมัติ/ชีพจร/ความดัน sys-dia/อุณหภูมิ) ปุ่ม "อัปเดต" ใช้ได้ตราบเคสยังไม่ปิด
BMI (ช่องม่วง) คำนวณอัตโนมัติจากน้ำหนัก/ส่วนสูง ไม่ต้องคีย์เอง
หมอเห็นว่าพยาบาลบันทึกความดันไม่ครบ (มีแค่ sys ไม่มี dia) — กด "อัปเดต" แก้เพิ่ม dia แล้วกด "บันทึก" BMI คำนวณใหม่อัตโนมัติจากน้ำหนัก/ส่วนสูงที่กรอกไว้ ไม่ต้องคีย์เอง
Chart หลายชั้น + ใช้รูปจริง + วาดเต็มจอ
เคสที่มีหลายหมอร่วมทำจะมี "ชั้นชาร์ต (ตามหมอ)" แยกคนละชั้น ปุ่ม "เพิ่ม chart" เปิดชั้นใหม่ของหมออีกคน ไอคอนดินสอสลับเจ้าของชาร์ต ปุ่ม "ใช้รูป"/"เปลี่ยนรูป" ใช้รูปคนไข้จริงแทนเฟซชาร์ตเทมเพลต ปุ่ม "วาดเต็มจอ (iPad)" เปิดหน้าวาดแยก
แต่ละหมอมีชั้นชาร์ตแยก (ป้าย "ชาร์ตหลัก" = ชั้นฐาน) · จุดแดง = ตำแหน่งฉีดที่วาดไว้ · "วาดเต็มจอ" เปิดหน้าวาดแยกสำหรับ iPad
เคส Botox ที่หมอ A ทำหน้าผาก หมอ B ทำใต้ตาในวันเดียวกัน — หมอ A เข้าเคส กด "เพิ่ม chart" เปิดชั้นใหม่ให้หมอ B แล้วส่ง iPad ต่อให้หมอ B วาดจุดฉีดของตัวเองในชั้นที่แยกกัน ป้าย "ชาร์ตหลัก" ยังอยู่ที่ชั้นฐานของหมอ A ย้อนดูภายหลังเลือกดูทีละชั้นได้ว่าใครฉีดจุดไหน
Doctor's Note — พิมพ์/เขียนมือ/ขยาย
การ์ดโน้ตที่บันทึกแล้ว (แก้ผ่านไอคอนดินสอ) + ช่องเขียนใหม่ด้านล่างเสมอ สวิตช์ พิมพ์/เขียนมือ สลับโหมดบนกระดาษเดียวกัน (ซ้อนกันได้ทั้งพิมพ์และลายมือ), ปุ่ม "ขยาย" เปิดหน้าต่างลอย, dropdown "แพทย์ผู้บันทึก"
พิมพ์/เขียนมือ ซ้อนบนกระดาษใบเดียวกันได้ · dropdown "แพทย์ผู้บันทึก" ผูกชื่อหมอกับโน้ตเสมอ
หมอพิมพ์สรุปอาการเบื้องต้นในโหมดพิมพ์ แล้วกดสวิตช์ไปเขียนมือเพื่อวาดแผนผังตำแหน่งจุดฉีดทับข้อความเดิม (ตัวอักษรกับลายเส้นซ้อนกันบนกระดาษใบเดียว) จอมือถือแคบไปสำหรับวาดละเอียด กด "ขยาย" เปิดเป็นหน้าต่างลอยเต็มจอ วาดเสร็จกด "บันทึกโน้ต" ระบบผูกชื่อหมอที่เลือกใน dropdown ติดไปกับโน้ตนั้นเสมอ
ICD-10
โหมดแก้ไข: กรอกรหัส (เช่น L70.0) + คำอธิบายต่อแถว ปุ่ม "เพิ่มรหัส" บันทึกรวมกับ diagnosis/notes
หมอวินิจฉัยสิวอักเสบ กด "แก้ไขเคส" พิมพ์รหัส L70.0 + คำอธิบาย "Acne vulgaris" กด "เพิ่มรหัส" อีกครั้งถ้ามีวินิจฉัยร่วม แล้วกด "บันทึก" — ถ้าไม่กรอกเลย โหมดอ่านอย่างเดียวโชว์ "ไม่มีรหัส ICD-10" แทนช่องว่าง
ยา/เวชภัณฑ์ที่ใช้ (multi-lot FEFO)
ปุ่ม "+ เพิ่ม" เปิด modal "เพิ่มสินค้าเข้าเคส" ค้นหาชื่อ/รหัส หมวดหมู่ (แนะนำ/วัสดุสิ้นเปลือง/ทั้งหมด/รายหมวด) การ์ดสินค้ามีปุ่ม +/− สินค้าแบ่งล็อตมีช่อง "เลือก Lot" ค่าเริ่มต้นล็อตใกล้หมดอายุสุด (ป้าย "Auto FEFO")
งานหลักของ 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 จริงของหมอเจ้าของชาร์ตชั้นที่กำลังเปิดอยู่ — มีตรรกะกันไม่ให้ดึงพนักงานที่ไม่ใช่หมอมาแสดงเป็น "แพทย์" ฝั่งขวาช่องเซ็นชื่อ + ปุ่ม "บันทึกลายเซ็น"
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
เมนูของคุณ
โครงจอเดียวกับหมอทุกจุด (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 เป็นการเช็คตัวตนจริงจากเซิร์ฟเวอร์
ฉีดฟิลเลอร์ใต้ตา + อีก 1 รายการ
จอแคบเปิดที่ "เคสของฉัน" อัตโนมัติ · การ์ดขึ้นเฉพาะเคสที่ BT อยู่ในช่อง "ผู้ทำ" · ป้าย "คุณ: ผู้ทำหัตถการ"
BT ที่วันนี้ถูกมอบหมายเป็นผู้ทำ 3 เคส (เตรียมของให้หมอ A 2 เคส, ทำความสะอาดหลังหัตถการให้หมอ B 1 เคส) เปิดแอปมือถือตอนเช้า — เห็นแท็บ "เคสของฉัน (3)" ทันที ไม่ต้องกดหาเองในคิวรวมของทั้งคลินิก
2.3-2.4 เปิดเคส + แท็บ "ชาร์ต & บันทึก"
ส่วนหัวคนไข้/สัญญาณชีพ/แพ้ยา เห็นเหมือนหมอทุกประการ ไม่มีข้อมูลถูกซ่อนสำหรับ BT
ป้ายแพ้ยาสีแดงเด่นบนหัวการ์ด — BT เห็นก่อนเตรียมยา/ของ ไม่ต้องเปิดแท็บอื่นไปหา
สัญญาณชีพ — งานที่ BT ทำเป็นหลัก
คนไข้เดินเข้าห้องตรวจ พยาบาลกด "อัปเดต" กรอกน้ำหนัก 58 ส่วนสูง 162 ความดัน 118/76 กด "บันทึก" — BMI ขึ้นให้อัตโนมัติ พอหมอเปิดเคสตามมาจะเห็นค่าล่าสุดพร้อมอยู่แล้ว ไม่ต้องวัดซ้ำ (ปุ่มไม่ได้ล็อกเฉพาะ role แต่เป็นลำดับงานจริงของคลินิก)
BT กด "อัปเดต" กรอกค่า → BMI คำนวณอัตโนมัติ · หมอเปิดเคสตามมาเห็นค่าล่าสุดพร้อม ไม่ต้องวัดซ้ำ
Chart หลายชั้น + วาด — BT ไม่ได้เป็นเจ้าของชั้น
ชั้นชาร์ตผูกกับ "หมอเจ้าของชาร์ต" เท่านั้น — BT ไม่สามารถเปิดชั้นชาร์ตในชื่อตัวเองได้ (ปุ่ม "เพิ่ม chart" เลือกได้เฉพาะรายชื่อหมอ) แต่ยังกดปุ่ม "วาดเต็มจอ (iPad)" หรือช่วยวาดในชั้นของหมอที่เปิดอยู่ได้
"เพิ่ม chart" จาง (เลือกได้เฉพาะชื่อหมอ) · BT กด "วาดเต็มจอ" ช่วยมาร์กจุดในชั้นของหมอที่เปิดอยู่ได้
ระหว่างหัตถการ หมอสั่งให้ BT ช่วยมาร์กตำแหน่งจุดที่ทำความสะอาดหลังฉีดในชั้นชาร์ตของหมอ — BT ถือ iPad กด "วาดเต็มจอ (iPad)" วาดในชั้นที่หมอเปิดไว้อยู่แล้ว (ไม่ได้เปิดชั้นใหม่ในชื่อตัวเอง เพราะ dropdown เลือกเจ้าของชาร์ตมีแต่รายชื่อหมอ)
Doctor's Note — เขียนได้ แต่ระบุชื่อหมอที่รับผิดชอบ
พยาบาลจดบันทึกอาการเบื้องต้นที่คนไข้เล่าให้ฟังก่อนหมอเข้าห้อง กดโหมด "พิมพ์" เขียนสรุป เลือก dropdown "แพทย์ผู้บันทึก" เป็นชื่อหมอที่จะดูเคสนี้ แล้วกด "บันทึกโน้ต" — พอหมอเปิดเคสตามมาจะเห็นโน้ตนี้เป็นการ์ดแรก พร้อมชื่อหมอที่ระบุกำกับไว้ ไม่ใช่ชื่อพยาบาลผู้พิมพ์
พยาบาลจดก่อนหมอเข้าห้อง → เลือก "แพทย์ผู้บันทึก" ผูกชื่อหมอกับโน้ต ไม่ใช่ชื่อพยาบาลผู้พิมพ์
ICD-10 — จอเดียวกับหมอ แต่ตามหน้าที่จริงมักเป็นหมอกรอกวินิจฉัย เพราะเป็นเนื้อหาทางคลินิกที่ต้องอาศัยการตรวจของหมอ (ระบบไม่ได้ล็อก BT ออกจากฟอร์มนี้ แค่ในทางปฏิบัติไม่ใช่บทบาทที่ทำ)
ยา/เวชภัณฑ์ที่ใช้ — งานเตรียมของหลักของ BT
BT เตรียมห้องหัตถการก่อนคนไข้เข้า — เปิด modal "เพิ่มสินค้าเข้าเคส" เลือกหมวด "วัสดุสิ้นเปลือง" ติ๊กเข็ม 1 ชิ้น ถุงมือ 2 คู่ สำลีแอลกอฮอล์ 5 ชิ้น กด "เพิ่มสินค้า 3 รายการ" ระบบตัดสต็อกทันที — ล็อตที่ตัดเลือกล็อตใกล้หมดอายุสุดอัตโนมัติเหมือนหมอทำเอง ไม่มีสิทธิ์ต่างกัน
งานหลักของ BT — ปรับ +/− จำนวนวัสดุสิ้นเปลืองตามที่ใช้จริง · "Auto FEFO" เลือกล็อตใกล้หมดอายุสุดให้เอง · ตัดสต็อกทันที
Before/After — BT มักเป็นคนถือกล้อง/มือถือถ่ายรูปก่อน-หลังให้หมอเทียบผล ปุ่มกล้องใช้ได้เหมือนกันทุก role
ก่อนทำ
หลังทำ (ถ่ายรูป)
BT ถือกล้องถ่าย Before/After ให้หมอ · "ดูรูปเต็ม/เทียบ" เปิด side-by-side + slider · ปุ่มกล้องใช้ได้ทุก role
ClinicalStepper — BT เป็นเจ้าของ 2 ใน 4 ขั้น
เตรียมหัตถการ (เจ้าของ: BT) → ทำหัตถการ (เจ้าของร่วม: BT+แพทย์) → จบหัตถการ (เจ้าของ: BT — กดแล้วห้องว่าง คิวถัดไปเข้าได้)
ขั้นที่เสร็จ = เขียว · ขั้นปัจจุบัน = ม่วง · ขั้นถัดไปล็อกจนกว่าจะทำขั้นก่อนหน้าเสร็จ
หลังหมอกดขั้น "ตรวจ/ปรึกษา" เสร็จ — BT เข้าไปกด "ทำขั้นนี้" ที่ "เตรียมหัตถการ" (จัดเตรียมเข็ม/ยาชา/พื้นที่) จากนั้นหมอกลับมาทำหัตถการจริง ทั้ง BT และหมอถือเป็นเจ้าของขั้น "ทำหัตถการ" ร่วมกัน (ปุ่มกดได้จากทั้งสองฝั่ง) — พอหัตถการเสร็จ BT เป็นคนกด "จบหัตถการ" ปุ่มนี้ปลดคิว/ปลดห้องให้ว่างรับคิวถัดไปทันที (toast "จบหัตถการแล้ว — ห้องว่าง รับคิวต่อได้") หมอไม่ต้องรอกดปุ่มนี้เอง
ลายเซ็นแพทย์ — BT เห็นแต่เซ็นแทนไม่ได้ในทางปฏิบัติ เพราะไม่ใช่เจ้าของชั้นชาร์ต ช่องเซ็นในแถบนี้ผูกกับหมอโดยธรรมชาติของข้อมูล ไม่ใช่การล็อกแยกต่างหาก
2.5-2.7 รายการ&บิล / ข้อมูลคนไข้ / ยินยอม
แถบ "ผู้ทำ" ต่อบริการเลือกได้ทั้งหมอ/พยาบาล/ผู้ช่วยจาก dropdown เดียวกัน ในทางปฏิบัติ BT มักเป็น "ผู้ทำ" ของบริการเสริม (ทำความสะอาดผิว, พันแผล) ที่หมอมอบหมายให้ กล่อง "ยอดรวมเคสนี้" price-gated พยาบาล/ผู้ช่วย/BT ไม่เห็นยอดเงินเช่นกัน
ทำความสะอาดผิวหลังฉีด
"ผู้ทำ" เลือกได้ทุกบทบาทจาก dropdown เดียวกัน · ยอดเงิน price-gated: BT/พยาบาลเห็น "—" ไม่เห็นตัวเลข
ปุ่ม "ใช้สิทธิ์"/"โอนสิท" ไม่ได้ล็อกเฉพาะหมอ — พยาบาล/ผู้ช่วยที่ดูแลคนไข้ตรงหน้าสามารถกด "ใช้สิทธิ์" แทนคนไข้ที่มาใช้คอร์สได้เช่นกัน
BT/พยาบาลมักเป็นคนเลือกเทมเพลตแล้วส่ง iPad ให้คนไข้เซ็นจริงระหว่างเตรียมคนไข้ก่อนหมอเข้าห้อง หรือเป็นคนอัปโหลดฟอร์มกระดาษที่คนไข้เซ็นไว้แล้วเข้าระบบ — จอและสิทธิ์เหมือนหมอทุกประการ
2.8-2.10 ปิดเคส / ไม่มีเมนูลูกค้า / HR-ของฉัน
ปุ่มปิดเคส/ส่งไปชำระเงิน/เพิ่มย้อนหลัง ปรากฏตามสถานะเคส (ไม่ใช่ตาม role ที่ล็อกอิน) — พยาบาล/ผู้ช่วย/BT เห็นปุ่มชุดเดียวกับหมอถ้ามีสิทธิ์ แต่ในทางปฏิบัติขั้นตอนปิดเคส/ส่งชำระมักเป็นหน้าที่หมอหรือฝ่ายหน้าเคาน์เตอร์ตัดสินใจ เพราะเกี่ยวข้องกับ diagnosis/notes และการเงินที่ BT มองไม่เห็นตัวเลขอยู่แล้ว BT ไม่มีทางเข้าเมนูลูกค้าแบบไม่ผูกเคส HR-ของฉันเหมือนหมอทุกจุด (ข้อมูลส่วนตัว/ตารางงาน/ลงเวลา/ลา/OT/สลิปเงินเดือน/ใบอนุญาต ของตัวเองเท่านั้น)
ปุ่มตามสถานะเคส (ไม่ล็อกตาม role) · ปิดเคส=เขียว · ส่งไปชำระเงิน=ฟ้า → คิว POS · ในทางปฏิบัติหมอ/เคาน์เตอร์เป็นคนกด
ตารางสรุปต่างกันตามบทบาท
| จุด | หมอ | พยาบาล / ผู้ช่วย / BT |
|---|---|---|
| เมนู "ลูกค้า" | เห็น | ไม่เห็น |
| เมนู "ประวัติการรักษา (EMR)" | เห็น | เห็น |
| HR-ของฉัน | เห็น (กลุ่ม "ของฉัน") | เห็น เหมือนกัน |
| Worklist มือถือ ค่าเริ่มต้น | เคสของฉัน | เคสของฉัน (เกณฑ์เดียวกัน) |
| ClinicalStepper ขั้น 1 "ตรวจ/ปรึกษา" | เจ้าของขั้น | ไม่ใช่เจ้าของ (กดได้ถ้ามีสิทธิ์ แต่ป้ายระบุแพทย์) |
| ClinicalStepper ขั้น 2 "เตรียมหัตถการ" | ไม่ใช่เจ้าของ | เจ้าของขั้น |
| ClinicalStepper ขั้น 3 "ทำหัตถการ" | เจ้าของร่วม | เจ้าของร่วม |
| ClinicalStepper ขั้น 4 "จบหัตถการ" | ไม่ใช่เจ้าของ | เจ้าของขั้น (กดปลดห้อง/คิว) |
| เปิดชั้นชาร์ตในชื่อตัวเอง | ทำได้ | ทำไม่ได้ (dropdown มีแต่รายชื่อหมอ) |
| ลายเซ็นในแถบ "ข้อมูลแพทย์" | ผูกกับตัวเอง | ผูกกับหมอเจ้าของชาร์ตเสมอ ไม่ใช่ตัวเอง |
| Doctor's Note (เขียน/พิมพ์) | เขียนได้ | เขียนได้เหมือนกัน (ระบุ "แพทย์ผู้บันทึก" แยกจากผู้พิมพ์) |
| ยา/เวชภัณฑ์ (เพิ่ม/เลือกล็อต FEFO) | ทำได้ | ทำได้เหมือนกัน (งานเตรียมของหลักของ BT) |
| ผู้ทำต่อบริการ (dropdown) | เลือกตัวเองหรือมอบหมายคนอื่นได้ | ถูกเลือกเป็นผู้ทำได้ หรือเลือกคนอื่นเองก็ได้ |
| ยอดรวมเคสนี้ (฿) | ไม่เห็น (price-gated) | ไม่เห็นเช่นกัน |
| ใช้สิทธิ์/โอนสิทธิ์แพ็กเกจ | ทำได้ | ทำได้เหมือนกัน |
| ปิดเคส/ส่งไปชำระ/เพิ่มย้อนหลัง | ปุ่มปรากฏตามสถานะเคส ไม่ผูก role บนจอ | เหมือนกัน — สิทธิ์จริงเช็คที่เซิร์ฟเวอร์ |
เจ้าหน้าที่คลัง
เมนูของคุณ
เมนูอยู่ใต้ "คลังสินค้า" ในแถบซ้าย (16 หน้าย่อย) และถ้าคลินิกเปิดโมดูล "จัดซื้อ" เสริม จะมีอีก 4 หน้า — สังเกตป้ายตัวเลขสีแดง/เหลือง (badge) ข้างเมนูย่อยฝั่งซ้าย ขึ้นเมื่อมีงานค้างที่ต้องทำ เปิดดูก่อนเป็นอันดับแรกทุกเช้า
§1 แดชบอร์ดคลัง
ควรเป็นหน้าแรกที่เปิดทุกเช้า: แบนเนอร์สีเหลือง/แดง "รอปรับสต็อก" (ขึ้นเฉพาะตอนมีของขายไปแล้วแต่ยังไม่รับเข้าจริง), การ์ดสรุป 4 ใบ (รายการทั้งหมด/มูลค่าสต็อก/ใกล้หมด/ใกล้หมดอายุ), ปุ่มลัด 3 ปุ่ม (รับสินค้าเข้า/นับสต็อก/ยาใกล้หมด), ตาราง "ต้องเติมด่วน (Top 5)" คู่ "ใกล้หมดอายุ" และ "อันดับสินค้าที่ใช้บ่อย (90 วัน)"
แบนเนอร์ "รอปรับสต็อก" (แดง/เหลือง) ขึ้นเฉพาะตอน oversell · มูลค่าสต็อกเห็นเฉพาะผู้มีสิทธิ์ต้นทุน
| สถานการณ์ | ทำอะไร | ผลลัพธ์ |
|---|---|---|
| เปิดหน้ามาเจอแบนเนอร์สีแดง "รอปรับสต็อก 3 รายการ" | กด "ดูรายการรอปรับสต็อก" ในแบนเนอร์ | พาไปหน้า §14 ตรง เห็นรายการที่ยอดติดลบทันที |
| อยากรู้มูลค่าสต็อกลอยตัวเดือนนี้ (ผู้มีสิทธิ์เห็นต้นทุนเท่านั้น) | เลื่อนดูวิดเจ็ต "มูลค่าสต็อกตามหมวด" | ถ้าไม่มีสิทธิ์เห็นต้นทุน วิดเจ็ตนี้จะไม่แสดงเลย (ไม่ใช่ error แค่ถูกซ่อน) |
| ของมาส่งพอดี ไม่อยากไล่หาเมนู | กดปุ่มลัด "รับสินค้าเข้า" กลางแดชบอร์ด | ไปหน้า GR ทันที ไม่ต้องเข้าเมนูซ้าย |
§2 สินค้า / ผลิตภัณฑ์
ตารางสินค้าทั้งหมด: รหัส/ชื่อ (มีรูป), หมวด, คงเหลือ (มีจุดสั่งกำกับใต้ตัวเลข), หน่วย, ราคา/หน่วย, วันหมดอายุ, สถานะ (หมด/ใกล้หมด/ใกล้หมดอายุ/ปกติ) — ค้นหา/กรองครบ 9 แบบ (ชื่อ/คงเหลือ/วันที่เพิ่ม/วันหมดอายุ/ราคา/SKU) ตัวกรองที่เลือกไว้จำในเครื่องให้อัตโนมัติ
- อยากดูว่าสินค้าตัวนี้เหลือกี่ lot วันหมดอายุอะไรบ้าง → กดไอคอนตา (Eye) ที่แถวสินค้า → เห็นรายการ lot ทั้งหมดในหน้าต่างเดียว
- มีสินค้าใหม่เข้ามาขายที่ยังไม่เคยมีในระบบ → กด "เพิ่มสินค้า" มุมขวาบน → กรอกฟอร์ม → บันทึก แล้วค่อยไปรับเข้าสต็อกจริงที่หน้า GR (§3) เพราะตรงนี้แค่สร้างตัวสินค้า ยังไม่ได้เติมของเข้าคลัง
- สินค้าเดิมมี lot ใหม่เข้ามา → กดปุ่ม "รับ-จ่ายสต็อก" มุมขวาบน หรือไอคอนกล่อง (Box) ที่แถวสินค้านั้นโดยตรง
- นำเข้าสินค้าทีเดียวหลายร้อยรายการจาก Excel → กด "นำเข้าจากไฟล์" → ดาวน์โหลดฟอร์ม → กรอก → อัปโหลด → ระบบตรวจก่อนยืนยัน → อัปโหลดไฟล์เดิมซ้ำจะอัปเดตแถวเดิมตาม SKU ไม่สร้างซ้ำ
- แก้ไขข้อมูลสินค้า → ไอคอนดินสอที่แถว — ถ้า login ด้วยบัญชีสิทธิ์จำกัดกว่า admin จะเห็นทูลทิปเปลี่ยนเป็น "อัปเดตรูปสินค้า" เท่านั้น (แก้ได้แค่รูป ไม่ใช่ราคา/หมวด)
§3 รับสินค้าเข้า (GR) — หน้าที่ใช้บ่อยที่สุด
ตัวกรองสถานะ: ทั้งหมด/ร่าง/รอตรวจสอบ/Post แล้ว/รอบัญชีเติมต้นทุน — ถ้าคลินิกเปิด "ต้องตรวจทานก่อนโพสต์" ใบรับเข้าใหม่จะค้างที่ "รอตรวจสอบ" ก่อนตัดเข้าสต็อกจริง
GR-2569-0142
Supplier: บจก. เมดิคอล · 8 รายการ
รับของก่อน ใส่ต้นทุนทีหลังได้ — ใบขึ้น badge เหลือง "รอบัญชีเติมต้นทุน" · บัญชีกด "เติมต้นทุน" แล้วคำนวณถัวเฉลี่ยใหม่เอง
ขั้นตอนปกติ: กรอกวันที่รับ/Supplier/PO/หมายเหตุ → เพิ่มรายการในกริดแบบ bulk (สินค้า, Lot number บังคับ, จำนวน, ต้นทุน/หน่วย, วันหมดอายุ, GPO/เย็น, ตำแหน่งจัดเก็บ) → บันทึกเข้าสถานะ "ร่าง" → กด "Post" ที่แถว → ยืนยัน modal "สร้าง Lot และบันทึก movement — ไม่สามารถย้อนกลับได้" → สต็อกเข้าจริง
ของมาส่ง แต่ยังไม่รู้ต้นทุน/ใบแจ้งหนี้ยังไม่ออก — กรอก lot + วันหมดอายุตามปกติแต่เว้นช่องต้นทุน/หน่วยว่างไว้ Post ได้ตามปกติ สต็อกเข้าจริงทันที ไม่ต้องรอต้นทุน ใบรับขึ้นสถานะ "รอบัญชีเติมต้นทุน" (badge เหลือง) ทีมบัญชีจะกดปุ่ม "เติมต้นทุน" ที่แถวทีหลัง บันทึกเป็น movement ปรับมูลค่าแบบ append-only และคำนวณต้นทุนถัวเฉลี่ยเคลื่อนที่ใหม่ให้อัตโนมัติ — สรุป: ไม่ต้องรอใบแจ้งหนี้ก่อนรับของเข้าคลัง
คลินิกเปิดโหมด "ต้องตรวจทานก่อนโพสต์" — กด Post แล้วใบไม่เข้าสต็อกทันที ค้างที่ "รอตรวจสอบ" ต้องรอผู้มีสิทธิ์กด "อนุมัติ" ก่อนสต็อกจะเข้าจริง หรือกด "ตีกลับ" ถ้าข้อมูลผิด — อย่าตกใจว่าทำไมสต็อกยังไม่ขึ้น
ของมาหลาย lot ของสินค้าตัวเดียวกัน (คนละวันหมดอายุ) — แยกกรอกทีละแถวในกริด แต่ละแถวใส่ lot number ต่างกัน ห้ามรวมเป็นแถวเดียวเพราะวันหมดอายุต่างกัน ระบบสร้าง lot แยกให้ ไม่ปนกัน
§4 Lot & วันหมดอายุ
ตารางทุก lot: Lot Number (badge GPO/เย็น), สินค้า, คงเหลือ (จำนวนที่ถูกจองอยู่ใต้ตัวเลข), วันหมดอายุ (นับถอยหลัง), สถานะ, ที่เก็บ — ชิปกรอง ทั้งหมด/≤30 วัน/≤90 วัน/หมดอายุแล้ว/กักกัน-เรียกคืน
"Post" ยืนยันสร้าง Lot + บันทึก movement (ย้อนกลับไม่ได้) — ป้ายวันหมดอายุเปลี่ยนสีตามความใกล้
- เจอ lot ใกล้หมดอายุใน 30 วัน อยากกันไม่ให้ขายออก → กดชิป "≤30 วัน" พิจารณาย้ายไปหน้าขาย/โปรลดราคาด่วนตามนโยบายคลินิก
- สงสัยว่า lot มีปัญหาคุณภาพ (เก็บผิดอุณหภูมิ) → กด "แก้ไข" เปลี่ยนสถานะเป็น "กักกัน" — lot จะไม่ถูกเลือกไปจ่าย/ขายจนกว่าจะเปลี่ยนกลับ
- Supplier เรียกคืนสินค้าทั้งรุ่น → เปลี่ยนสถานะเป็น "เรียกคืน" แล้วไปเปิดใบเคลม (§12)
- lot หมดอายุไปแล้วแต่ยังค้างในระบบ → ขึ้น "หมดแล้ว" (เทา) อัตโนมัติตามวันที่ ไม่ต้องกดอะไร แต่ต้องไปดำเนินการปรับปรุงสต็อกตัดออก (§6) ถ้าต้องการเคลียร์ยอด
§5 ยาใกล้หมด / Reorder
การ์ด KPI 2 ใบ (ต่ำกว่า/เท่ากับจุดสั่ง, รายการแนะนำสั่ง) ตาราง: สินค้า, คงเหลือ, ขั้นต่ำ, จุดสั่ง, ควรสั่งเพิ่มเท่าไหร่, หน่วย, Supplier ล่าสุด
สินค้าต่ำกว่าจุดสั่งขึ้นเองอัตโนมัติ · หน้านี้ "ตรวจจับ+รายงาน" ไม่มีปุ่มสร้าง PO (ไปที่ §17.3)
สินค้าตกลงมาต่ำกว่าจุดสั่งซื้อขึ้นในตารางนี้อัตโนมัติ ไม่ต้องไล่เช็คทีละตัว ต้องส่งใบขอซื้อ → กด Export Excel แล้วส่งไฟล์ต่อ — หน้านี้ไม่มีปุ่มสร้าง PO ในตัวเอง ถ้าต้องสร้าง PO จริงต้องไปที่ §17.3 (มักเป็นสิทธิ์ admin เท่านั้น) — บทบาทของหน้านี้คือ "ตรวจจับ+รายงาน" ไม่ใช่ "สั่งซื้อ"
§6 ปรับปรุงสต็อก
ใช้เมื่อยอดในระบบไม่ตรงกับของจริงหน้าคลัง (ไม่ใช่กรณีนับสต็อกทั้งรอบ ดู §7) — กด "สร้างการปรับปรุง" → เลือกเหตุผลหลัก (เสียหาย/หาย/นับผิด/หมดอายุ-ทำลาย/ปรับปรุงตัวเลข/อื่นๆ) → เพิ่มแถวเลือกสินค้า+Lot กรอก "ยอดใหม่" (เลขสัมบูรณ์ ไม่ใช่ผลต่าง เช่นเหลือ 8 ชิ้นกรอก 8 ไม่ใช่ -2) → "ส่งขออนุมัติ" → ผู้มีสิทธิ์กด "อนุมัติ" → กด "ดำเนินการ" อีกครั้งสต็อกถึงจะเปลี่ยนจริง
"ยอดใหม่" = เลขสัมบูรณ์ (เหลือ 8 กรอก 8) · สต็อกเปลี่ยนจริงเมื่อกด "ดำเนินการ" หลังอนุมัติเท่านั้น
- เจอสินค้าแตกหักระหว่างเก็บของ → เหตุผล "เสียหาย" กรอกยอดใหม่ (ของจริงที่เหลือหลังหักตัวที่แตก) ส่งขออนุมัติ
- นับ 1 ตัวแล้วรู้สึกว่าจำนวนผิดตั้งแต่ไหน แต่ยังไม่ถึงรอบนับใหญ่ → สร้างการปรับปรุงเดี่ยว เหตุผล "นับผิด" ได้เลย ไม่ต้องรอรอบนับทั้งคลัง
§7 นับสต็อก
ใช้ตอนถึงรอบนับสต็อกทั้งคลัง/ทั้งหมวด/ทั้งโซน — กด "สร้างรอบนับสต็อก" ระบุที่เก็บ/โซน (ถ้ามี) → กรอก "ยอดนับจริง" ต่อสินค้า (คอลัมน์ "ยอดระบบ" เป็น snapshot กรอกเองไม่ได้) → "สร้างรอบนับ" (ร่าง) → "ส่งตรวจ" (รอตรวจสอบ — ระบบคำนวณส่วนต่างให้ตอนนี้) → ผู้มีสิทธิ์กด "อนุมัติ" → สต็อกถูกปรับตามส่วนต่างจริง
"ยอดระบบ" = 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 แบ่งเป็น 2 กลุ่มเสมอ: "ของฉัน" (พนักงานทุกคนรวมแพทย์เห็น — ดู/จัดการข้อมูลของตัวเองเท่านั้น) และ "จัดการบุคคล" (HR/admin/super_admin เท่านั้น — ดู/จัดการข้อมูลของทั้งทีม+อนุมัติคำขอ+ตั้งค่าระบบ) หลายหน้าเป็น component เดียวกัน สลับมุมมองด้วยพารามิเตอร์ scope (self/team) — ข้อมูลทีมจะไม่ถูกส่งมาเลยถ้า role ไม่ใช่ผู้จัดการ (เซิร์ฟเวอร์กรอง ไม่ใช่แค่ซ่อนปุ่ม) ผู้อนุมัติทั้งหมด (ลา/OT/แก้เวลา/ตารางงาน/แลกเวร) คือ admin/super_admin เป็นหลัก — ระบบไม่มี "หัวหน้าแผนก" อนุมัติเฉพาะทีมตัวเอง แจ้งเตือนไปยัง admin ทุกคนในสาขาพร้อมกัน ใครกดก่อนก็มีผลเลย
ส่วนที่ 1 — "ของฉัน" (พนักงานทุกคนใช้ได้)
แดชบอร์ดของฉัน (/hr/me): การ์ด "เข้างานวันนี้" (KPI เดียวที่พนักงานทั่วไปเห็น — เป็นตัวเลขนับรวมทั้งสาขา ไม่ใช่แค่ตัวเอง), การ์ด "เข้าถึงด่วน" (ลัดไป 6 หน้าในกลุ่มของฉัน), ปฏิทินการลารายเดือน
"เข้างานวันนี้" = KPI เดียวที่พนักงานทั่วไปเห็น (นับรวมทั้งสาขา) · "เข้าถึงด่วน" ลัด 6 หน้าในกลุ่มของฉัน
กิจกรรมของฉัน — ไทม์ไลน์กิจกรรมตัวเอง เป็น self-only จริง (เซิร์ฟเวอร์ส่งเฉพาะเหตุการณ์ของผู้ใช้ที่ล็อกอิน แก้ URL ดูของเพื่อนร่วมงานไม่ได้)
ข้อมูลส่วนตัว — ข้อมูลการเงิน (เงินเดือน/ประกันสังคม/บัญชีธนาคาร) เป็นดูอย่างเดียวเสมอ พนักงานแก้เองไม่ได้ กด "แก้ไขข้อมูล" แก้ได้แค่ที่อยู่/เบอร์ฉุกเฉิน/รูปโปรไฟล์ ถ้าข้อมูลการเงินผิดต้องแจ้ง HR ให้ไปแก้ที่หน้า "ข้อมูลพนักงาน" (2.2)
พนักงานย้ายที่อยู่ใหม่ → เปิด "ข้อมูลส่วนตัว" → กด "แก้ไขข้อมูล" → แก้ "ที่อยู่ปัจจุบัน" → "บันทึกข้อมูล" → บันทึกสำเร็จทันที ไม่ต้องรออนุมัติ (ต่างจากคำขอลา/OT) แต่ถ้าเลขบัญชีธนาคารผิด จะแก้เองไม่ได้ ต้องแจ้ง HR
ตารางงานของฉัน
2 แท็บ: "ตารางงานรายสัปดาห์" (ส่งแผนเข้างานล่วงหน้าเป็นรายสัปดาห์ — คนละหน้ากับ "จัดตารางกะ" ที่แอดมินกำหนดกะให้ตรง) และ "ขอแลกเวร"
กติกาที่ระบบบังคับ: แต่ละวันที่ติ๊ก "มาทำงาน" ต้องมีช่วงเวลาอย่างน้อย 9 ชั่วโมง (ทำงาน 8 + พัก 1) — ไม่ครบระบบขึ้นข้อความชัดเจนและไม่ให้ส่ง / ส่งตารางงานข้ามเดือนไม่ได้ — ส่งได้ถึงวันสุดท้ายของเดือนปัจจุบันเท่านั้น
เปิดสัปดาห์หน้า → ติ๊ก "มาทำงาน" จันทร์-ศุกร์ 09:00-18:00 (รวม 9 ชม.) → หยุดเสาร์-อาทิตย์ → "ส่งตารางงาน" → รอ admin อนุมัติ
กรอกวันจันทร์ 09:00-16:00 (รวม 7 ชม.) แล้วกดส่ง → ระบบปฏิเสธ ขึ้นข้อความบอกวันที่และเหตุผลชัดเจน → ต้องแก้เวลาให้ครบ 9 ชม. ก่อนจึงจะส่งได้
ขอแลกเวร: กด "+ เพิ่มคำขอ" เลือก "กะของฉัน" (เฉพาะกะของตัวเองจริงในอีก 60 วันข้างหน้า) + เพื่อนร่วมงานที่จะขอแลก + เหตุผล (บังคับ) — ผู้ถูกขอไม่ต้องกดยินยอมในระบบ เมื่อ admin อนุมัติ ระบบสลับเจ้าของกะให้ทันทีทั้งสองฝั่งโดยไม่มีขั้นตอนให้ปลายทางตอบรับก่อน จึงควรตกลงกันนอกระบบก่อนยื่นคำขอ
ลงเวลา / เวลาของฉัน
ปุ่มใหญ่ "ลงชื่อเข้างาน" (ฟ้า) / "ลงชื่อออกงาน" (แดง) ใต้ป้าย "ยืนยัน GPS: ภายในพื้นที่สาขา"
ออกงานก่อนครบ 8 ชม. = กล่อง "บันทึกออกงานก่อนกำหนด" · ลืม clock-out = แถวป้ายแดง "ไม่ได้ลงชื่อออก" + ปุ่มขอแก้เวลา
ออกงานก่อนครบ 8 ชั่วโมง — clock-in 09:00 กด "ลงชื่อออกงาน" ตอน 14:00 (5 ชม.) → เปิดกล่อง "บันทึกออกงานก่อนกำหนด" พร้อมรายการผลกระทบที่อาจเกิด (คะแนนเข้างาน/คำนวณค่าจ้างตามสัดส่วนจริง/ต้องรับทราบจาก HR) → เลือก "ยืนยันการออกงานก่อนเวลา" หรือ "กลับไปทำงานต่อ"
ลืมลงชื่อออกงาน — วันถัดไประบบตรวจพบอัตโนมัติ แถวขึ้นป้าย "ไม่ได้ลงชื่อออก" (แดง) พร้อมปุ่ม "ส่งคำขอแก้เวลา" กรอกเวลาออกงานที่ถูกต้อง (บังคับ) + เหตุผล (บังคับ) → "ส่งคำขอ" → รอ HR อนุมัติ (1-2 วันทำการ) — ปุ่มนี้ปรากฏเฉพาะแถวที่ระบบทำเครื่องหมายว่าไม่ได้ลงชื่อออกเท่านั้น ถ้าลืม clock-in ตั้งแต่ต้นวันต้องแจ้ง HR ตรวจสอบผ่านหน้าบันทึกเวลาทีมแทน — การแก้เวลาไม่สร้าง OT ให้เด็ดขาด ต้องยื่นคำขอ OT แยก
ลาของฉัน
การ์ดโควตาการลาแสดงทุกประเภทพร้อมจำนวนวันคงเหลือ/ทั้งหมด
แถบสัดส่วนคงเหลือ/ทั้งหมด · โควตาไม่พอ = ปฏิเสธก่อนบันทึก (ยกเว้น "ลาไม่รับค่าจ้าง") · นับวันเต็มเสมอ ไม่รองรับครึ่งวัน
ยื่นลาปกติ — กด "ขอลาหยุด" → เลือกประเภทการลา + วันที่เริ่ม-สิ้นสุด + เหตุผล (บังคับ) → "ส่งคำขอ" ระบบคำนวณจำนวนวันอัตโนมัติ (นับรวมหัวรวมท้ายเป็นวันเต็มเสมอ ไม่รองรับลาครึ่งวัน) ตรวจโควตาก่อนบันทึกทุกครั้ง → สถานะ "รออนุมัติ" admin ทุกคนในสาขาได้รับแจ้งเตือน
โควตาไม่พอ (เหลือ 2 วันแต่ขอ 5 วัน) → ระบบปฏิเสธทันทีก่อนบันทึก (ไม่ปล่อยค้างเป็นคำขอ) — ข้อยกเว้น: "ลาไม่รับค่าจ้าง" ไม่ตรวจโควตา เพราะไปหักเงินเดือนแทน ลาย้อนหลังระบบไม่ห้ามเลือกวันที่ย้อนหลัง แต่เป็นหน้าที่ผู้อนุมัติพิจารณาความสมเหตุสมผลเอง
| ประเภทการลา | ผลต่อเงินเดือน |
|---|---|
| ลาป่วย / ลากิจ / ลาพักร้อน | ไม่หักเงิน |
| ลาไม่รับค่าจ้าง | หักตามสัดส่วนวัน (ฐานเงินเดือน × วันที่ลา ÷ จำนวนวันในเดือน) — ประกันสังคมยังคิดเต็ม |
| ลาคลอด | นายจ้างจ่ายเต็ม 45 วันแรก ส่วนเกินหักเหมือนลาไม่รับค่าจ้าง |
| ขาดงาน (ไม่ได้ยื่นลา) | หักเท่ากับลาไม่รับค่าจ้าง 1 วันต่อครั้ง |
ไม่มีปุ่มยกเลิกใบลาบนหน้าจอ — ยื่นผิดต้องให้ admin กด "ปฏิเสธ" แทน เลยวันเริ่มลาไปแล้วยกเลิกไม่ได้เลย ต้องติดต่อ HR ปรับโควตาด้วยมือ
ขอ OT
สูตร: ฐานเงินเดือน÷30÷8×ชั่วโมง×ตัวคูณ · ตารางโชว์ "—" จนอนุมัติ · เฉพาะ OT อนุมัติแล้วเข้าเงินเดือนงวดถัดไป
กด "ขอ OT" → กรอกวันที่/เวลาเริ่ม/เวลาสิ้นสุด + เลือกอัตรา (1.5 เท่าวันทำงานปกติ / 2 เท่าวันหยุด / 3 เท่าวันหยุดนักขัตฤกษ์) + เหตุผล (บังคับ ≥3 ตัวอักษร) → "ส่งคำขอ" ระบบคำนวณจำนวนเงินทันที (สูตร: ฐานเงินเดือน÷30÷8×ชั่วโมง×ตัวคูณ) แต่ตารางยังโชว์ "—" จนกว่าจะอนุมัติ — เฉพาะ OT ที่อนุมัติแล้วเท่านั้นที่ถูกดึงเข้าเงินเดือนงวดถัดไป
สลิปเงินเดือนของฉัน + ใบอนุญาตของฉัน
หน้าดูอย่างเดียวของสลิปที่จ่ายแล้วเท่านั้น (ฉบับร่างไม่แสดง) — รายละเอียดแยกรายการต้องดูจากสลิปที่ HR ส่งทาง LINE แทน ใบอนุญาตของฉันเป็นหน้าดูอย่างเดียว (เพิ่ม/แจ้งเตือนทำได้เฉพาะ HR)
สลิปแสดงเฉพาะที่ "จ่ายแล้ว" · ใบอนุญาตเหลือ ≤90 วัน = ป้ายเหลือง + แจ้งเตือน 1 ครั้ง (ในระบบ+LINE) · แก้วันหมดอายุที่ HR เท่านั้น
แพทย์มีใบอนุญาตประกอบวิชาชีพเวชกรรมจะหมดอายุในอีก 60 วัน — ระบบตรวจทุก 6 ชั่วโมง เมื่อเหลือ ≤90 วัน เปลี่ยนป้ายเป็น "ใกล้หมดอายุ" (เหลือง) อัตโนมัติ พร้อมส่งแจ้งเตือนหนึ่งครั้งทั้งในระบบและ LINE → แพทย์ไปต่ออายุจริง แล้วแจ้ง HR อัปเดตวันหมดอายุใหม่ที่หน้า "ทะเบียนใบอนุญาต" (2.10) เพราะหน้านี้แก้ไขเองไม่ได้
ส่วนที่ 2 — "จัดการบุคคล" (HR / admin / super_admin เท่านั้น)
แดชบอร์ดทีม (/hr/admin/dashboard): การ์ด KPI 4 ใบ (พนักงานทั้งหมด/เข้างานวันนี้/รออนุมัติลา/ใบอนุญาตใกล้หมด), เข้าถึงด่วน 6 ปุ่ม, การ์ด "รออนุมัติการลา" (4 รายการล่าสุด), ปฏิทินการลาทั้งทีม
ข้อมูลพนักงาน (/hr/employees)
เพิ่มพนักงานใหม่ — กด "เพิ่มพนักงาน" กรอก 4 ส่วน: บัญชีผู้ใช้ (username/password/role/รหัสพนักงาน/แผนก/ตำแหน่ง/วันเริ่มงาน/สาขาที่เข้าถึงได้), ข้อมูลส่วนตัว, ข้อมูลทางการเงิน (ประเภทการจ้าง/ฐานเงินเดือน/ประกันสังคม/เงินกู้/บัญชีธนาคาร), ตารางเวลาทำงาน (ค่าตั้งต้นให้ "ตารางงานของฉัน") → "บันทึกข้อมูล"
ประเภทการจ้าง ตัดสินเส้นทางภาษี/เงินเดือนทั้งหมด: ลูกจ้างประจำ เข้าระบบเงินเดือนปกติ หักภาษีขั้นบันได (ภ.ง.ด.1) ส่วน ฟรีแลนซ์/ค่ามือ หัก ณ ที่จ่าย 3% ออกใบ 50 ทวิ (ภ.ง.ด.3) และไม่เข้าระบบเงินเดือนรายเดือน — เลือกผิดกระทบการคำนวณภาษีทั้งงวด สวิตช์ "ตั้งเป็นคนคีย์เคสเริ่มต้น" เปิดได้คนเดียวเท่านั้น ตั้งคนใหม่ระบบถอดสถานะจากคนเดิมอัตโนมัติ
พนักงานที่เป็น "Mirror" (สำเนามาจากคลินิกหลัก ระบบ multi-branch) badge "Mirror จาก [คลินิกหลัก]" ปุ่มแก้ไข/ลบถูกปิดอัตโนมัติ ต้องไปแก้ที่คลินิกหลัก — ลบพนักงาน: กดถังขยะ ยืนยันครั้งเดียว ไม่มีขั้นตอนยืนยันซ้ำและไม่มีปุ่ม "ปิดใช้งาน" แยก ก่อนลบควรพิจารณาว่ามีประวัติเงินเดือน/เวลา/ลาต้องอ้างอิงย้อนหลังไหม ถ้ามีแนะนำเปลี่ยนรหัสผ่าน+ถอดสาขาแทนการลบ
จัดตารางกะ + วางแผนกะการทำงาน
"จัดตารางกะ" (RosterPlanner) คนละหน้ากับ "ตารางงานของฉัน" — คลิกช่องว่างใต้ชื่อพนักงาน+วันที่ เลือกกะด่วน (เช้า/บ่าย/ดึก/หยุด) ปุ่ม "คัดลอกสัปดาห์ก่อน" กด "บันทึกตาราง (N)" บันทึกเป็นชุดเดียว
คลิกช่องเลือกกะด่วน · ป้าย "พนักงานอนุมัติ" (เขียว) คลิกทับต้องยืนยัน · เกิน 9 ชม. = เตือนหลังบันทึก (ไม่บล็อก)
เตือนแต่ไม่ห้าม — HR จัดให้พนักงานทำงาน 10 ชั่วโมงในวันเดียว (เกิน 9 ชม.) กด "บันทึกตาราง" ยังบันทึกได้ตามปกติ แต่ระบบขึ้นแบนเนอร์เตือนหลังบันทึก ไม่บล็อกการบันทึก เป็นการเตือนเชิงข้อมูลให้ HR ทบทวนเอง
ทับกะที่พนักงานส่งมาเองและอนุมัติแล้ว: ช่องมีป้าย "พนักงานอนุมัติ" (เขียว) — คลิกทับเปิดกล่องยืนยัน "ทับกะที่อนุมัติแล้ว" ก่อนเสมอ ป้าย "รออนุมัติ" (ส้ม) คลิกลิงก์ไปอนุมัติ/ปฏิเสธที่หน้า "อนุมัติตารางงาน" ได้ทันที "วางแผนกะการทำงาน" เป็นหน้าดูภาพรวมเท่านั้น ไม่มีปุ่มแก้ไข — เห็นคนขาดต้องไปแก้ที่ "จัดตารางกะ" แทน
อนุมัติตารางงาน / OT / แก้เวลา / การลา
admin เป็นทั้งผู้จัดการและบังเอิญเป็นคู่กรณีในคำขอแลกเวร (ผู้ขอหรือผู้ถูกขอ) → กดปุ่มอนุมัติในแถวของตัวเอง → ระบบปฏิเสธที่เซิร์ฟเวอร์ "คุณเป็นผู้ขอหรือผู้ถูกขอในคำขอนี้ จึงไม่สามารถอนุมัติ/ปฏิเสธเองได้" → ต้องให้ admin คนอื่นดำเนินการแทน — เช่นเดียวกับ HR ยื่นใบลาตัวเองแล้วมาอนุมัติเอง ระบบปฏิเสธด้วยข้อความ "ไม่สามารถอนุมัติคำขอลาของตัวเองได้"
อนุมัติ OT: จำนวนเงินคำนวณตอนพนักงานยื่น ไม่ใช่ตอนอนุมัติ กด "ปฏิเสธ" ต้องกรอกเหตุผลก่อนยืนยันเสมอ อนุมัติแก้เวลา: ถ้าเวลาออกที่พนักงานกรอกเร็วกว่าหรือเท่ากับเวลาเข้า ระบบปฏิเสธเองโดยอัตโนมัติแม้ HR จะกดอนุมัติ (ป้องกันข้อมูลผิดปกติ) อนุมัติการลา: อนุมัติได้เฉพาะใบที่สถานะ "รออนุมัติ" เท่านั้น ผลลัพธ์เมื่ออนุมัติระบบตัดโควตาของพนักงานทันที
แท็บ "โควต้า" แก้ไขได้รายคน ใช้เมื่อพนักงานลาครึ่งวันแต่ระบบไม่รองรับ (นับเต็มวันเสมอ) HR ต้องปรับตัวเลขคงเหลือด้วยมือหลังตกลงกันนอกระบบ แท็บ "ตั้งค่า" จัดการประเภทการลาที่มีในระบบ เพิ่มประเภทใหม่ปรากฏในดรอปดาวน์ทันที
บันทึกเวลาทีม + ทะเบียนใบอนุญาต
บันทึกเวลาทีม (/hr/attendance) ดูของคนอื่นเท่านั้น ไม่สามารถ clock-in/out แทนใครได้ ไม่มีปุ่มแก้เวลาให้ HR กดแทน (สิทธิ์แก้เป็นของพนักงานเจ้าของบันทึกเอง) HR ทำได้แค่แจ้งให้พนักงานไปยื่นคำขอแก้เวลาเอง
ส่งแจ้งเตือนใบอนุญาตซ้ำด้วยมือ — ระบบส่งแจ้งเตือนอัตโนมัติเมื่อใบอนุญาตเหลือ ≤90 วันเพียงครั้งเดียว ถ้าพนักงานพลาดอ่าน กดปุ่มไอคอนสามเหลี่ยมเตือน "ส่งแจ้งเตือนหมดอายุ" ที่แถวนั้น ยิงแจ้งเตือนซ้ำทันที — ค่าเริ่มต้นของระบบคือไม่ห้ามพนักงานทำงานแม้ใบอนุญาตหมดอายุ (แจ้งเตือนอย่างเดียว) ต้องการบังคับจริงจังต้องแจ้งทีมเทคนิคเปิดสวิตช์แยกและควรเปิดหลังบันทึกใบอนุญาตครบทุกคนแล้วเท่านั้น
เงินเดือน & ค่าเคส (/hr/payroll)
ตัวช่วยประมวลผล 3 ขั้นตอน: เลือกงวด → ตรวจสอบฉบับร่าง (ระบบสร้างให้อัตโนมัติทุกช่อง ไม่มีช่องให้แก้ตัวเลขด้วยมือ กด "คำนวณใหม่" ได้ทุกเมื่ออย่างปลอดภัย) → ดำเนินการจ่าย (สรุปยอดรวม → "ยืนยันและประมวลผลทั้งหมด")
ฉบับร่างระบบสร้างอัตโนมัติ ไม่มีช่องแก้มือ · 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 ไว้เป็นทางเลือกในหลายหน้า แต่ในทะเบียนตำแหน่งมาตรฐานยังไม่มีตำแหน่งนี้ให้เลือกจริงตอนสร้างพนักงาน — ในทางปฏิบัติงานอนุมัติและจัดการบุคคลทั้งหมดจึงตกอยู่กับ admin/super_admin ถ้าต้องการแยกฝ่ายบุคคลจากผู้ดูแลระบบสายเทคนิค ต้องตั้งตำแหน่งนั้นเป็น admin (ได้สิทธิ์ด้านอื่นติดมาด้วยทั้งหมด)ฝ่ายบัญชี
เมนูของคุณ
เข้าจากเมนู หลังบ้าน → บัญชี (เมนูย่อยกางออก 7 หัวข้อ) — โมดูลนี้เป็นโมดูลเสริมที่คลินิกอาจเปิด/ปิดได้ ทุกหน้าย่อยกรองข้อมูลตามสาขาที่กำลังดูอยู่อัตโนมัติ ต้องมีสิทธิ์ระดับแอดมิน/ผู้ดูแลระบบ
2.1 ใบกำกับภาษี (/accounting/tax-invoices)
สิทธิ์ accounting.taxinvoice.view · การ์ด KPI 4 ใบ · ตัวกรองเป็นงวดภาษี (เดือน+ปี พ.ศ.) ไม่ใช่ช่วงวันที่อิสระ — กรองตามเดือนที่ออกเอกสารภาษี
บัญชีปิดงวดภาษีเดือนที่แล้ว ต้องรวบรวมใบกำกับภาษีทั้งหมดเพื่อยื่น ภ.พ.30 — เลือกงวดภาษี ตารางแสดงรายการเรียงตามเลขที่เอกสาร/วันที่/ลูกค้า (ลูกค้าไม่มีชื่อขึ้น "ลูกค้าทั่วไป (walk-in)")/ฐานภาษี/VAT/รวม/ประเภท (เต็มรูป/อย่างย่อ) → คลิก "รายละเอียด" ดูรายการก่อนยื่น → Export Excel เก็บเป็นไฟล์แนบยื่นสรรพากร
2.2-2.3 ตั้งค่า VAT + ตั้งค่าการบัญชี
สิทธิ์ accounting.vat.config — มีแถบเตือนว่าการแก้ไขมีผลทางกฎหมาย ต้องตรวจกับนักบัญชีก่อนบันทึกเสมอ
จดทะเบียน VAT ครั้งแรก — เปิดสวิตช์ "จดทะเบียนภาษีมูลค่าเพิ่ม" ระบบเปิดให้กรอกฟิลด์ที่เหลือ: อัตรา VAT (เริ่มต้น 7%), วันที่มีผล, เลขประจำตัวผู้เสียภาษี 13 หลัก (เช็ครูปแบบให้ ไม่ครบฟ้อง error ทันที), ชื่อนิติบุคคล, ที่อยู่ → บันทึก → รายการใหม่โผล่ในตาราง "ประวัติการแก้ไข" พร้อมชื่อผู้แก้ไข+เวลา
ต้องการออกใบกำกับภาษีย้อนหลัง (บิลเก่าก่อนวันที่ตั้งค่า VAT มีผล) — หน้านี้ไม่มีปุ่มสั่ง backfill ให้กด ต้องประสานทีมเทคนิคทำ migration/replay ฝั่งหลังบ้านโดยตรง
ล็อกงวดบัญชี — ปิดงบเดือนที่แล้วเสร็จ ไม่ต้องการให้ใครลงบัญชีย้อนหลังเข้าเดือนนั้น → เลือกเดือน/ปี กด "ล็อกงวดนี้" (มีแถบเตือน "อย่าล็อกงวดที่ยังมีรายการขายค้างลงบัญชี") → เดือนนั้นไปปรากฏในตารางงวดที่ล็อกพร้อมวันที่+ผู้ล็อก — พบบิลตกหล่นต้องลงย้อนหลัง กด "ปลดล็อก" ต้องยืนยันก่อนปลดจริง
เกณฑ์อายุลูกหนี้: เปลี่ยนจาก "วันที่ทำรายการ" เป็น "วันครบกำหนดชำระ" ระบบขึ้นข้อความกำกับว่า "เร็วๆ นี้" ยังไม่รองรับจริง — แม้เลือกไว้ รายงาน AR Aging ยังคำนวณตาม txn_date เหมือนเดิม วิธีคิดต้นทุน: เปลี่ยนดรอปดาวน์เป็นค่าอ้างอิงเท่านั้น ไม่ส่งผลต่อการคำนวณ COGS จริง — บัญชีต้องรู้ว่าเป็นแค่ป้ายกำกับแสดงผล
VAT ตอนแปลงแพ็คเกจเป็นเครดิต: เลือกไว้ล่วงหน้าว่าจะจัดการแบบ "ออกใบลดหนี้ (Credit Note)" (ลดยอดขาย/ภาษีขายเดิม ออกเครดิตใหม่ — เหมาะคลินิกจด VAT) หรือ "โอนภายใน (Internal Transfer)" (ย้ายมูลค่าคงเหลือเป็นเครดิตโดยไม่แตะภาษีขายเดิม)
"วิธีคิดต้นทุน" เป็นป้ายแสดงผลเท่านั้น (ไม่เปลี่ยน COGS จริง) · เกณฑ์อายุลูกหนี้ "วันครบกำหนด" = "เร็วๆ นี้" ยังไม่รองรับ
2.4 ภ.พ.30 (/accounting/pp30)
สิทธิ์ accounting.report.view · ตัวกรองเดือน+ปี (พ.ศ.) · การ์ด KPI 4 ใบ
"ภาษีขาย (Output VAT)" = ตัวเลขหลักกรอกในแบบ · ตาราง "รายละเอียดรายวัน" ตรวจไขว้ไม่ให้วันไหนขาด
ล็อกงวด = กันลงบัญชีย้อนหลังเข้าเดือนนั้น · พบบิลตกหล่นต้องกด "ปลดล็อก" (ยืนยันก่อน) จึงลงย้อนได้
ทุกวันที่ 15 ของเดือนต้องยื่นแบบ ภ.พ.30 — เลือกเดือน/ปีที่จะยื่น เห็นการ์ด "ภาษีขาย (Output VAT)" เป็นตัวเลขหลักที่ต้องกรอกในแบบฟอร์ม เลื่อนดูตาราง "รายละเอียดรายวัน" ตรวจสอบไขว้ไม่มีวันไหนขาดหาย → กด "CSV" ดาวน์โหลดไฟล์แนบยื่นแบบ
2.5 ใบแจ้งหนี้ซื้อ (AP) (/accounting/ap-bills)
สิทธิ์ accounting.ap.view — หน้านี้มีทั้งดู/สร้าง/อนุมัติ สถานะบิล: ร่าง → จับคู่แล้ว/ไม่ตรง → อนุมัติแล้ว → จ่ายแล้ว
3-Way Match เทียบใบแจ้งหนี้ ↔ PO ↔ GR · ผลไม่ตรง (อำพัน/แดง) ต้องเคลียร์ก่อนอนุมัติ · จ่ายแล้ว = หัก WHT พร้อมกัน
- สร้างใบแจ้งหนี้: ได้รับใบแจ้งหนี้จากผู้จัดจำหน่ายยา → "สร้างใบแจ้งหนี้" เลือกผู้จัดจำหน่าย+เลขอ้างอิง PO/GR → กรอกตารางรายการ (รหัส/ชื่อ/จำนวน/ราคา/VAT%/WHT%) ระบบคำนวณสรุปยอดสดขณะกรอก → บิลเข้าสถานะร่าง
- รัน 3-Way Match: กด "รัน 3-Way Match" เทียบใบแจ้งหนี้กับ PO และ GR ผลลัพธ์ 1 ใน 5: ตรงกัน (เขียว) / จำนวนไม่ตรง (อำพัน) / ราคาไม่ตรง (อำพัน) / เกินมูลค่า PO (แดง) / ยังไม่รับสินค้า (แดง) — ผลไม่ตรงต้องตรวจกับคลัง/ผู้จัดจำหน่ายก่อนไปขั้นถัดไป
- อนุมัติ: บิลสถานะ "จับคู่แล้ว" กด "อนุมัติ" → เข้าสถานะ "อนุมัติแล้ว" พร้อมจ่ายได้
- บันทึกการจ่าย + 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 ฝั่งเจ้าหนี้/ซื้อ (คนละหน้ากับ WHT เงินเดือน HR) · ภ.ง.ด.3 = บุคคลธรรมดา · ภ.ง.ด.53 = นิติบุคคล
สิ้นเดือนต้องยื่น ภ.ง.ด.53 สำหรับผู้จัดจำหน่ายนิติบุคคลที่ถูกหัก WHT จากบิล AP → เลือกดรอปดาวน์ "ภ.ง.ด.53 (นิติบุคคล)" เลือกเดือน/ปี ดู KPI 3 ใบ (จำนวนรายการ/ฐานภาษีรวม/ภาษีหักรวม) ตรวจตารางรายผู้ถูกหัก → "CSV ยื่นสรรพากร" — ออกหนังสือรับรองให้บุคคลธรรมดาแทน สลับดรอปดาวน์เป็น "ภ.ง.ด.3 (บุคคลธรรมดา)"
2.7 ลูกหนี้ค้างชำระ (AR) (/accounting/ar-aging) สิทธิ์ reports.ar.view — รายงานฝั่งบัญชี แยกช่วงอายุหนี้มาตรฐาน คนละหน้ากับ "ค้างชำระ (AR)" ปฏิบัติการ (1.2) ซึ่งเป็นมุมหน้าร้าน
แยกช่วงอายุหนี้ ปัจจุบัน/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-invoices | accounting.taxinvoice.view |
| ตั้งค่า VAT | /accounting/vat-settings | accounting.vat.config |
| ตั้งค่าการบัญชี | /accounting/settings | accounting.vat.config |
| ภ.พ.30 | /accounting/pp30 | accounting.report.view |
| ใบแจ้งหนี้ซื้อ (AP) | /accounting/ap-bills | accounting.ap.view |
| ภ.ง.ด.3/53 (WHT) | /accounting/wht-report | accounting.report.view |
| ลูกหนี้ค้างชำระ (AR) บัญชี | /accounting/ar-aging | reports.ar.view |
| อายุหนี้เจ้าหนี้ (AP Aging) | /accounting/ap-aging | accounting.ap.view |
ผู้จัดการ
เมนูของคุณ
ผู้จัดการดูภาพรวมธุรกิจ จัดคิวอนุมัติของทุกแผนก และติดตามวงเงินลูกค้าใกล้หมดอายุ — หน้าที่เฉพาะฝั่งบัญชี (ใบกำกับภาษี/ภ.พ.30/AP 3-way match ฯลฯ) อยู่ที่การ์ด "ฝ่ายบัญชี" ผู้จัดการเห็นเมนู "บัญชี" ได้เฉพาะกรณีมีสิทธิ์ accounting.report.view เพิ่มเติม (ปกติจำกัดไว้ให้บัญชี/แอดมิน) ทั้งหมดอยู่ในเมนูซ้ายกลุ่ม "หลังบ้าน" ต้องมีสิทธิ์ระดับแอดมิน/ผู้จัดการขึ้นไป ยกเว้น วงเงินใกล้หมดอายุ ที่พนักงานขายเห็นได้ด้วย
1.1 รายงาน (/reports)
สิทธิ์ reports.view — หน้าเดียวรวม 7 แท็บ + แดชบอร์ดวิเคราะห์ ตัวกรองช่วงวันที่เป็นชิปปุ่มใช้ร่วมกันทุกแท็บ (วันนี้/เมื่อวาน/สัปดาห์นี้/เดือนนี้/90 วัน/ปีนี้/กำหนดเอง)
ชิปช่วงวันที่ใช้ร่วมทุกแท็บ · แดชบอร์ดวิเคราะห์มีแถบ "เทียบกับ:" (ช่วงก่อน/ปีก่อน/เลือกเอง)
แท็บภาพรวม — การ์ด KPI 4 ใบ (รายได้รวม/COGS/ค่าใช้จ่ายรวม/กำไรสุทธิ) + สถานะคลัง + สัดส่วนรายได้สินค้า vs บริการ
ลูกศรเขียวขึ้น/แดงลง เทียบช่วงก่อนหน้า · COGS พุ่ง (ส้ม/แดง) → ดู "สถานะคลัง" ด้านล่างประกอบ
เปิดหน้ารายงานทุกเช้าจันทร์ เลือกชิป "สัปดาห์นี้" เทียบกับ "เดือนนี้" ที่ดูเมื่อวันศุกร์ → เห็นการ์ด "กำไรสุทธิ" ลดลงเพราะ "ต้นทุนสินค้า (COGS)" พุ่งสีส้ม → ดูส่วนล่าง "สถานะคลังสินค้า" เห็นการ์ด "สินค้าใกล้หมด" ขึ้นแดง → กด "จัดการคลังสินค้า →" ตรวจว่าเป็นการเติมสต๊อกก้อนใหญ่หรือของหาย
แท็บวิเคราะห์กำไร — ตารางกำไร/ขาดทุนรายวัน + ตารางประสิทธิภาพรายการสินค้า
สงสัยว่าวันไหนกำไรติดลบ → ไล่หาแถวที่ "อัตรากำไร" ติดลบ (สีแดง) → เลื่อนดูตาราง "ประสิทธิภาพรายการสินค้า" ว่าวันนั้นขายรายการที่ต้นทุนสูงกว่าราคาขายหรือไม่ (โปรลดราคาแรงเกินจุดคุ้มทุน) → ใช้เป็นหลักฐานคุยทีมขายเรื่องส่วนลด
แท็บบันทึกรายการ — รายงานยอดรับชำระทุกบิลในช่วงเวลา
ลูกค้าโทรมาทวงใบเสร็จ → พิมพ์ HN ในช่อง "ค้นหา HN..." → คลิกรหัสบิล: ถ้าผูกกับเคสเปิดหน้า EMR ให้ทันที ถ้าไม่ผูก (walk-in ไม่เปิด OPD) เปิดหน้าต่างสรุปบิลแทน → ติ๊ก "รวมรายการในบิล (xlsx)" แล้ว export Excel เก็บเป็นหลักฐาน
แท็บค่ามือ/คอมมิชชั่น — 2 แท็บย่อย: ก) รายงานค่ามือ (ค่ามือ (DF) ระบบคำนวณและตั้งจ่ายอัตโนมัติ — accrue เข้าเงินเดือน/เจ้าหนี้ — ไม่ต้องกรอก Excel เพิ่ม กรอกซ้ำเสี่ยงจ่ายหมอซ้ำ คอลัมน์ "ค่ามือ" ที่เห็นว่างในสลิปคือ "แสดงผลว่าง" ไม่ใช่ "ยังไม่ได้คำนวณ") ข) สรุปคอมมิชชั่น (การ์ด KPI 3 ใบ: สะสม/จ่ายแล้ว/ค้างจ่าย)
ปุ่ม "บันทึกการจ่ายเงิน" เปิดเฉพาะแถวที่มียอดค้างจ่าย > 0 · ค่ามือ (DF) ระบบ accrue อัตโนมัติ ห้ามกรอก Excel ซ้ำ
จ่ายคอมมิชชั่นพนักงานขายทุกสิ้นเดือน → ดูตาราง "สรุปรายชื่อพนักงานและค่าคอมมิชชั่น" หาแถวคอลัมน์ "ค้างจ่าย" > 0 → ปุ่ม "บันทึกการจ่ายเงิน" เปิดใช้งานเฉพาะแถวที่มียอดค้างจ่ายจริง (แถวจ่ายครบแล้วปุ่มปิด) → กดบันทึก → export Excel ทั้งตารางเก็บเป็นหลักฐานจ่าย
แท็บจัดการค่าใช้จ่าย — บันทึก/ดูค่าใช้จ่ายดำเนินงาน กด "เพิ่มค่าใช้จ่าย" กรอกประเภท+จำนวน+วันที่+หมายเหตุ → "ยืนยันบันทึกค่าใช้จ่าย" → ขึ้นตารางทันทีแสดง -฿ สีแดง บันทึกผิดกดถังขยะลบออกได้ทันที (ไม่มีขั้นตอนขออนุมัติลบ)
บันทึกแล้วขึ้นตารางทันที (-฿ แดง) · บันทึกผิดกดถังขยะลบได้เลย (ไม่มีขั้นตอนขออนุมัติลบ)
แท็บรายงานแยกตามหมวด — เมนูซ้าย 10 รายงาน เช่น "รายงานวงเงินลูกค้า" (แยกกระเป๋าเงินจริง/โบนัส) และ "รายงานการใช้จ่ายลูกค้า" (ความถี่ต่อลูกค้า) ใช้ประกอบตัดสินใจอนุมัติแคมเปญหรือส่ง SMS กระตุ้น
แท็บแดชบอร์ดวิเคราะห์ — 8 มุมมอง มุมมองแรก "ภาพรวมธุรกิจ" ต้องมีสิทธิ์ report.overview.view เพิ่มเติม (แยกจาก reports.view) ไม่มีสิทธิ์นี้ปุ่มมุมมองนี้ไม่ปรากฏเลยและระบบเปิดมุมมอง "วิเคราะห์ผู้ป่วย" เป็นค่าเริ่มต้นแทน — ทุกมุมมอง (ยกเว้น "ภาพรวมธุรกิจ") มีแถบ "เทียบกับ:" 3 แบบ: ช่วงก่อนหน้า (เท่ากัน) / ช่วงเดียวกันปีก่อน / เลือกเอง
อยากรู้ว่ายอดขายเดือนนี้ดีกว่าเดือนที่แล้วไหม → เลือกมุมมอง "วิเคราะห์รายรับ" → "ช่วงก่อนหน้า (เท่ากัน)" → ระบบเทียบช่วงยาวเท่ากันก่อนหน้าทันที เห็นลูกศรขึ้น/ลงข้าง KPI พร้อมแคปชันบอกวันที่จริงทั้ง 2 ฝั่ง — เทียบเทศกาลปีที่แล้ว (สงกรานต์ปีนี้กับปีก่อน) เปลี่ยนเป็น "ช่วงเดียวกันปีก่อน" หรือเทียบเดือนใดก็ได้ที่ไม่ติดกัน เลือก "เลือกเอง"
พลาดเลือกช่วงเดือนหน้า (ยังไม่ถึงวันที่นั้น) → ระบบขึ้นแถบ "ช่วงที่เลือกยังไม่มีข้อมูล — ข้อมูลล่าสุดถึง [เดือน/ปี]" พร้อมลิงก์ "ไปเดือนล่าสุดที่มีข้อมูล" → กดลิงก์พาไปเดือนที่มีข้อมูลจริงอัตโนมัติ ไม่ต้องกดวันที่เอง
1.2 ค้างชำระ (AR) — มุมปฏิบัติการ (/ar-outstanding)
สิทธิ์ reports.ar.view · read-only — คนละมุมกับ "ลูกหนี้ค้างชำระ (AR)" ในเมนูบัญชี (รายงานฝั่งบัญชี/ภาษี)
read-only ("ดู" เพื่อวางแผนตามหนี้) · เรียงตามอายุหนี้ เกิน 90 วัน (แดง) โทรทวงก่อน · ปรับยอดต้องไปที่เคส/POS
เห็นการ์ด KPI "ลูกค้าค้างชำระ" ขึ้นสีแดง (มากกว่า 0 ราย) → ดูตารางเรียงตาม "อายุหนี้" หาแถวป้ายแดง "เกิน 90 วัน" ก่อน → คอลัมน์ "ค้างเก่าสุด" บอกจำนวนวัน+วันที่ค้างมานานสุด → สั่งแคชเชียร์โทรทวงตามรายชื่อนี้ก่อน → Export Excel ส่งทีมเก็บเงินตามตัวกรองที่ใช้อยู่
หน้านี้ไม่มีปุ่มแก้ไข/บันทึกใดๆ — ต้องการปรับยอดค้างหรือรับชำระเพิ่ม ต้องไปทำที่หน้าเคส/POS โดยตรง หน้านี้แค่ "ดู" เพื่อวางแผนตามหนี้เท่านั้น
1.3 วงเงินใกล้หมดอายุ (/reports/wallet-expiring)
สิทธิ์ wallet.report.view (พนักงานขายเห็นได้ด้วย ไม่ได้จำกัดเฉพาะผู้จัดการ) เข้าได้อีกทางจากการ์ดแจ้งเตือนสีม่วงบนแดชบอร์ดหลัก
"ขายวงเงิน" ท้ายแถว → พาไป POS พร้อมพรีฟิลชื่อ · "หมดอายุแล้ว" = ระงับใช้ (stamp) ไม่ตัด/ลบเงินออก
เห็นการ์ดแจ้งเตือน "วงเงินใกล้หมดอายุ · N รายการหมดอายุใน 30 วัน" บนแดชบอร์ดหลัก → คลิกเข้ามาที่หน้านี้ → เลือกตัวกรอง "ภายใน 7 วัน" ดูกลุ่มเร่งด่วนที่สุด → เห็นสถานะ "ใกล้หมดอายุ" (เหลือง) กับ "หมดอายุแล้ว" (แดง — ระงับแล้ว ใช้ไม่ได้) คอลัมน์ "เหลือ (วัน)" ≤7 วันขึ้นแดงพิเศษ → กด "ขายวงเงิน" ท้ายแถวพาลูกค้าคนนั้นไปหน้า POS พร้อมพรีฟิลชื่อชวนซื้อวงเงินใหม่ก่อนของเดิมหมด
วงเงินที่ "หมดอายุแล้ว" ระบบแค่ระงับการใช้ ไม่ได้ตัดยอด/ลบเงินออกจากบัญชีลูกค้า (stamp-ระงับจ่าย ไม่ drain) — ลูกค้าต่อรองขอต่ออายุต้องทำผ่านขั้นตอนพิเศษ ไม่ใช่จากหน้ารายงานนี้
1.4 รวมการอนุมัติ (/approvals)
เข้าเมนูได้ต้องเป็นแอดมิน/ผู้ดูแลระบบ หรือผู้จัดการ (managerAllowed) — แต่การอนุมัติจริงแต่ละแท็บขึ้นกับนโยบายอนุมัติที่ตั้งไว้ (ตั้งค่าที่ สิทธิ์การใช้งาน › การอนุมัติ) ไม่ใช่ค่าคงที่ รวมคำขออนุมัติจากทุกโมดูลไว้จุดเดียวเป็น 3 แท็บ
ผู้อนุมัติ: Sale Director/ผู้ดูแลระบบ — พนักงานขายขอเปลี่ยนเซลล์ผู้ดูแลเคสจากคนเดิมไปอีกคน → เห็นรายการเคส+ชื่อเซลล์เดิม(ขีดฆ่า)→ชื่อใหม่+เหตุผล+"ขอโดย...· N นาทีที่แล้ว" → กด อนุมัติ ระบบย้ายยอดขาย/คอมมิชชั่นทันที หรือ ปฏิเสธ คงเซลล์เดิม — คำขอจากตะกร้า POS ก่อนเปิดเคส (ลูกค้ายังไม่ลงทะเบียน OPD) ขึ้นข้อความ "ยังไม่เปิดเคส — อนุมัติล่วงหน้าได้ ระบบจะผูกให้เมื่อเปิดเคส" อนุมัติได้ทันทีโดยไม่ต้องรอเปิดเคสก่อน
ผู้อนุมัติ: หัวหน้าคลัง/ผู้ดูแลระบบ — คลังรับสินค้าเข้าแล้วส่งเข้าคิวตรวจสอบ → เห็นเลขที่ใบรับ/เลข PO อ้างอิง/ชื่อผู้จัดจำหน่าย/จำนวนรายการ/ยอดรวม → ตรวจว่าจำนวน/ราคาตรงกับที่สั่งจริงหรือไม่ → กด อนุมัติ สินค้าจึงเข้าสต๊อกใช้งานได้จริง (ก่อนอนุมัติยังไม่นับเป็นสต๊อกพร้อมขาย) หรือ ปฏิเสธ ถ้ารายการผิดให้คลังแก้ใหม่
ผู้อนุมัติ: ผู้ดูแลระบบ — พนักงานพบบิลปิดไปแล้วเมื่อวานคิดราคาผิด ขอแก้ย้อนหลัง → เห็นป้ายประเภทการแก้ไข (แก้ราคารายการ/แก้ยอดสุทธิทั้งบิล/เพิ่มรายการย้อนหลัง)+เคสที่เกี่ยวข้อง+เหตุผล+ค่า "ก่อน→หลัง" เทียบให้เห็นชัด → กด อนุมัติ ระบบเล่นซ้ำ (replay) การแก้ไขผ่านขั้นตอนคำนวณปกติ (ปรับยอดเงิน/สต๊อก/รายงานอัตโนมัติ) หรือ ปฏิเสธ บิลเดิมคงเดิม
เปิดหน้า "รวมการอนุมัติ" เข้ามาได้ (ผ่านเกณฑ์ managerAllowed) แต่คลินิกยังไม่ตั้งชื่อผู้จัดการคนนี้เป็นผู้อนุมัติของแท็บ "แก้บิลหลังปิด" → แท็บยังคงปรากฏ (ไม่หายไป) แต่เปิดเข้าไปเห็นไอคอนกุญแจพร้อมข้อความ "บัญชีของคุณยังไม่ได้ถูกกำหนดให้อนุมัติการแก้บิลหลังปิด — ตั้งค่าได้ที่ สิทธิ์การใช้งาน › การอนุมัติ" ต้องขอให้แอดมินเพิ่มชื่อในนโยบายอนุมัติก่อน
ข้อจำกัดเฉพาะ: แท็บ "เปลี่ยนเซลล์" และ "แก้บิลหลังปิด" ฝั่งเซิร์ฟเวอร์บังคับเป็นผู้ดูแลระบบเท่านั้นโดยปริยาย (ไม่ว่านโยบายจะเปิดให้ role อื่นหรือไม่) — ถ้าไม่มีสิทธิ์อนุมัติแม้แต่แท็บเดียว หน้าทั้งหมดจะแสดงข้อความกลาง "คุณยังไม่มีสิทธิ์อนุมัติรายการใด ๆ" แทนที่แท็บทั้งหมด
1.5 ส่งต่อคนไข้เครือข่าย (/customers/referral) — เฉพาะคลินิกที่เปิด binding
สิทธิ์ binding.referral.manage — เมนูปรากฏเสมอ (ไม่ซ่อนเงียบ) แต่เนื้อหาแสดงสถานะ "ยังใช้ไม่ได้" ถ้ายังไม่ผ่านเงื่อนไข: (1) คลินิกต้องเชื่อมเครือข่าย (binding) กับคลินิกอื่นและสถานะ active (2) ต้องตั้งนโยบาย "การแชร์ข้อมูลคนไข้" เป็น Referral
ต้องบันทึกยินยอม (วาจา/เอกสาร/ดิจิทัล) ก่อนส่ง · ส่งเฉพาะฟิลด์ที่ต้นทางเลือก (whitelist) ปลายทางไม่เห็นประวัติทั้งหมด
คนไข้ต้องการทำหัตถการที่คลินิกนี้ไม่มีเครื่องมือ แต่สาขาเครือข่ายมี → เปิดแท็บ "ส่งออก" สร้างใบส่งต่อ ต้องบันทึกความยินยอมก่อน (วาจา/เอกสาร/ดิจิทัล) — สถานะเปลี่ยนจาก "ฉบับร่าง — ยังไม่ยินยอม" (อำพัน) เป็น "ยินยอมแล้ว — พร้อมส่ง" → กดส่งจริง "ส่งแล้ว · รอตอบรับ" → ปลายทางรับเข้า "รับเข้าแล้ว" (เขียว) หรือปฏิเสธ "ปฏิเสธ" (แดง) → จบงานกด "ปิดงานแล้ว"
ข้อมูลที่ส่งออกมีเฉพาะที่คลินิกต้นทางเลือกส่ง (whitelist จากโปรไฟล์คนไข้) — คลินิกปลายทางเห็นเฉพาะฟิลด์ที่ถูกส่งมาจริง ไม่ใช่ประวัติทั้งหมด
ผู้ดูแลระบบ / เจ้าของคลินิก
เมนูของคุณ
บทบาทนี้ (admin และ super_admin) เป็นบทบาทเดียวที่เข้าเมนู "ตั้งค่า/ระบบ" และ "งานผู้ดูแล" ได้ครบทุกหมวดโดยไม่ต้องมีสิทธิ์รายฟีเจอร์เพิ่ม (เป็นค่า fallback ของทุกหน้าตั้งค่า) และเป็นบทบาทเดียวที่แก้ "ตัวบทบาท"/ผู้อนุมัติของคลินิกได้ — เมนูงานประจำวัน (จอง/POS/EMR/ลูกค้า) admin เห็นเหมือนพนักงานทั่วไป หมวดที่มีป้าย "มีผลทั้งระบบ" = ตั้งจากสาขาไหนก็มีผลกับทุกสาขาพร้อมกัน ต้องระวังเป็นพิเศษ
1.1 ข้อมูลคลินิก & การชำระเงิน — มีผลทั้งระบบ
3 แท็บ: ข้อมูลคลินิก (หัวใบเสร็จ) settings.clinicprofile.manage · ธนาคารรับชำระ settings.paymentbank.manage · Void PIN settings.voidpin.manage
แต่ละหมวด = hub · ป้าย "มีผลทั้งระบบ" = ตั้งจากสาขาไหนก็มีผลทุกสาขาพร้อมกัน
ตั้ง Void PIN ครั้งแรก = พนักงานต้องกรอกก่อนยกเลิกเคสที่ POS · แก้หัวใบเสร็จมี live preview · ใบเก่าไม่เปลี่ยนตาม
เข้า "ข้อมูลคลินิก (หัวใบเสร็จ)" → แก้ "ที่อยู่" → ดูตัวอย่างหัวใบเสร็จ (live preview) เปลี่ยนตามทันที → บันทึก — ผลลัพธ์: ใบเสร็จที่ออกหลังจากนี้ใช้ที่อยู่ใหม่ทั้งหมด แต่ใบเสร็จเก่าที่ออกไปแล้วจะไม่เปลี่ยนตาม (ตราไว้ ณ เวลาออกใบ)
ติ๊ก "จดทะเบียน VAT" → บันทึก — ผลลัพธ์: ใบเสร็จรอบถัดไปแสดงบรรทัดภาษี เป็นการแสดงผลเท่านั้น ไม่กระทบการคำนวณบัญชีเบื้องหลัง (ต้องไปตั้งจุดคำนวณจริงที่ "บัญชี & VAT วงเงิน" ถ้าเกี่ยวกับวงเงิน)
เปลี่ยนค่าที่ "รูปแบบวันที่และเวลา" → ระบบขึ้นคำเตือนสีเหลืองทันที เปลี่ยนปี (พ.ศ./ค.ศ.) หรือรูปแบบวันที่มีผลทันที แต่เปลี่ยนเขตเวลาต้องแจ้งทีมเทคนิคให้ 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 ที่มีเคสค้างเกินกำหนดถูกเตือน/บล็อกไม่ให้รับเคสใหม่จนกว่าจะปิดเคสค้าง ยกเว้นคนในรายชื่อข้อยกเว้น
1.5 ต้นทุน & ค่าตอบแทน
แท็บ "กฎต้นทุนซ่อนเร้น" 4 แท็บย่อย: ค่ามือหมอ (Doctor Fee) · ค่าคอมมิชชัน · ต้นทุนอื่น · คำนวนย้อนหลัง (ซ่อนถ้าไม่มีสิทธิ์ cost.recompute.run)
ไปแท็บ "ค่ามือหมอ" → "เพิ่มกฎค่ามือหมอ" → ตั้งชื่อกฎ, ประเภท เปอร์เซ็นต์/จำนวนเงินคงที่ ค่า 20%, เลือกหมอ, ขอบเขต, รูปแบบกระจายค่าเมื่อมีหมอหลายคนร่วมเคส, ลำดับความสำคัญ — ผลลัพธ์: คำนวณค่ามือแพทย์อัตโนมัติ พร้อมหักภ.ง.ด.3 3% ตอนจ่าย (เฉพาะฟรีแลนซ์)
คำนวนกำไรย้อนหลังหลังแก้กฎต้นทุน: ต้องมีสิทธิ์ cost.recompute.run ไม่งั้นแท็บนี้ไม่แสดงเลย — เป็นคำสั่งเขียนข้อมูลย้อนหลังจำนวนมาก ควรรันนอกเวลาทำการหลังยืนยันแล้วว่ากฎใหม่ถูกต้อง เพราะกระทบตัวเลขกำไรย้อนหลังทั้งช่วง
1.6 สิทธิ์ & การแจ้งเตือน
ไป "การแจ้งเตือน" หาหัวข้อกลุ่ม "เงิน" เปลี่ยนระดับเป็น "ผิดปกติ/ด่วน" เลือกช่องทาง (ในแอป/LINE) ตั้ง threshold 3 วัน ตั้งบทบาทรับ escalation → บันทึก (ระดับสาขาตัวเอง — สาขาอื่นต้องตั้งแยก)
3 ระดับ: "กันลืม" (พนักงานปิดเสียงเองได้), "ต้องทำ" (ขึ้นกระดิ่ง+LINE ทันที ค้างจนทำจริง พนักงานปิดไม่ได้), "ผิดปกติ/ด่วน" (ปิดไม่ได้เลย ไม่มีคนรับส่งต่อขึ้นไปตามลำดับบทบาท)
1.7 เครือข่ายคลินิก — มีผลทั้งระบบ
ไป "การเชื่อมต่อ" เปิดโมดัล "จับคู่คลินิก" ยืนยันจับคู่ → ฝั่งคลินิกหลักเห็นสถานะซิงก์พนักงาน (roster mirror) พร้อมปุ่ม "ซิงก์อีกครั้ง" — แท็บ "นโยบาย" เข้าไม่ได้จนกว่าจะจับคู่สำเร็จ หลังจับคู่ตั้งนโยบายแชร์ข้อมูลคนไข้ (ปิด/รวมยอด/ส่งต่อ), นโยบายสต็อก (ฝากขาย), โหมดพนักงาน (แยกกัน/มิเรอร์)
จุดเขียว = เชื่อมปกติ · จุดเหลือง = รอยืนยัน/เชื่อมไม่ได้ · "มีผลทั้งระบบ" · แท็บ "นโยบาย" เข้าได้หลังจับคู่สำเร็จ
2. ป้ายกำกับลูกค้า (KOL/รีวิว)
หน้าจอ CRUD แคตตาล็อกป้ายที่แตะติดลูกค้าได้หลายอัน — read เปิดทุกคนที่เข้าแท็บนี้ได้, write ต้องมีสิทธิ์ crm.tag.manage
กด "เพิ่มป้ายกำกับ" กรอกชื่อป้ายไทย (บังคับ) เว้น Key ว่างได้ (ระบบตั้งอัตโนมัติจากชื่อ) เลือกสีจากจานสี 8 สีสำเร็จรูปหรือพิมพ์ hex เอง ตั้งลำดับแสดงผล → บันทึก — ผลลัพธ์: ขึ้นเป็นตัวเลือกในฟอร์มแก้ไขลูกค้าทันที ติดได้หลายป้ายพร้อมกัน
ปิดใช้งานป้ายที่มีลูกค้าติดอยู่แล้ว: toggle "ปิดใช้งาน" — ป้ายหายจากตัวเลือกติดป้ายใหม่ แต่ลูกค้าที่มีป้ายนี้ยังคงเห็นป้ายเดิม กด "ลบ" เมื่อมีคนใช้อยู่ — ระบบไม่ลบถาวรอัตโนมัติ แต่ปิดใช้งานแทน (ลบถาวรได้จริงเฉพาะป้ายที่ยังไม่มีใครใช้เลย) แก้ไข Key ไม่ได้หลังสร้าง — ตั้งผิดต้องลบ/ปิดใช้งานแล้วสร้างใหม่
3. จัดการบทบาท/สิทธิ์ (RBAC) — /admin/permissions
ศูนย์กลางที่ admin ใช้จัดการพนักงานมากที่สุด — สวิตช์หลัก "เปิดใช้งานระบบสิทธิ์การใช้งาน (RBAC)" (เปิด = บังคับสิทธิ์รายฟีเจอร์ตามที่ตั้ง, ปิด = กลับไปตรวจสิทธิ์ตามตำแหน่งแบบเดิม) มีกล่องยืนยันก่อนสลับทุกครั้ง
3.1 แท็บ "สิทธิ์รายพนักงาน" (เริ่มต้น)
เลือกพนักงาน 1 คน → เลือก Preset role → ตารางฟีเจอร์จัดกลุ่มตามโมดูล แต่ละแถวปุ่มสลับวน 3 สถานะ: เทา "จาก preset" → แดงอ่อน "ปิด — revoke override" → ฟ้า "เปิดเพิ่ม — grant override" → กลับเทา ฟีเจอร์กระทบเงิน/ข้อมูลอ่อนไหวมีป้าย "sensitive" (กุญแจ)
สูตรจริง = (preset ∪ เปิดเพิ่ม) − ปิดไว้ · ป้ายกุญแจ = sensitive (กระทบเงิน/ข้อมูล) · ปุ่ม "รีเซ็ตเป็น preset" ล้าง override
เลือกพนักงานคนนั้น → หา feature emr.cases.view_all → คลิกจนเป็นฟ้า "เปิดเพิ่ม — grant override" → บันทึก — ผลลัพธ์: เฉพาะคนนี้เห็นเคสทั้งหมดในสาขา BT คนอื่นยังเห็นเฉพาะเคสตัวเอง (สูตรสิทธิ์จริง = (preset ∪ เปิดเพิ่ม) − ปิดไว้) — เหมาะกับยกเว้นรายบุคคล ไม่ใช่ทั้งกลุ่ม (ถ้าทั้งบทบาท ให้ไปตั้งที่ "การมองเห็นเคส" ในแท็บ 2 แทน) ปุ่ม "รีเซ็ตเป็น preset" ล้าง override ทั้งหมด
3.2 แท็บ "สิทธิ์ตาม Role"
แก้ "ตัวบทบาท" เอง + เพิ่ม/ลบบทบาทของคลินิกได้เอง — ป้าย "ระบบ"/"คลินิก", "แก้แล้ว", "ต้องอัปเดต N"
- กด "เพิ่มบทบาท" → กรอกรหัส (a-z, 0-9,
_เท่านั้น เช่นhead_bt) + ชื่อที่แสดง "หัวหน้า BT" → "สร้าง" - บทบาทใหม่เริ่มต้นแบบ"ไม่มีสิทธิ์ใดๆ" (ปลอดภัยไว้ก่อน) และจะไม่ได้รับฟีเจอร์ใหม่ที่ระบบเพิ่มในอนาคตโดยอัตโนมัติเหมือนบทบาทระบบ
- ในตารางสิทธิ์ ติ๊กสิทธิ์ที่ต้องการ (เช่น approve คิว, ดูรายงานผลงาน BT) ใช้ตัวกรอง "แสดงเฉพาะที่ต่างจากค่าเริ่มต้น" ช่วยหา → บันทึก
- ถ้ามีพนักงานที่เคยถูกตั้งสิทธิ์รายคนไว้แล้ว (ตัวเลข "ต้องอัปเดต N") ระบบเด้งกล่องยืนยัน "ใช้กับพนักงานที่มีอยู่เลยไหม?" ทันทีหลังบันทึก — ต้องกดยืนยัน ไม่งั้นพนักงานกลุ่มนั้นยังใช้สิทธิ์ชุดเดิมต่อไป
ปุ่มอื่น: "คืนค่าเริ่มต้น" (เฉพาะบทบาทระบบที่ถูกแก้แล้ว) · "ลบบทบาท" (เฉพาะบทบาทคลินิก — มีพนักงานใช้อยู่ต้องเลือกบทบาทปลายทางย้ายคนก่อน)
ส่วนต่อท้าย — "การมองเห็นเคส (My-Cases)": ตารางกำหนดว่าแต่ละบทบาทเห็น "เห็นทั้งหมด" หรือ "เฉพาะเคสของตัวเอง" (ประวัติการรักษารายคนไข้ไม่ถูกจำกัดด้วยกฎนี้เพื่อความปลอดภัยทางคลินิก) — admin/super_admin เห็นทั้งหมดเสมอ ตั้งเป็นอย่างอื่นไม่ได้ (กันล็อกตัวเอง)
ให้ทั้งบทบาท "หัวหน้า BT" เห็นเคสทั้งหมดในสาขา — เลือก dropdown แถว "หัวหน้า BT" เป็น "เห็นทั้งหมด" แทน "ตามค่าเริ่มต้น" → บันทึก — ทุกคนที่มีบทบาทนี้เห็นเคสทั้งหมด ไม่ต้อง grant รายคนอีก ปุ่ม "กลับค่าเริ่มต้นระบบ" ล้างนโยบายทั้งหมด
3.3 แท็บ "การอนุมัติ"
ผู้มีสิทธิ์อนุมัติ: กำหนดว่าตำแหน่งใดอนุมัติงานประเภทใดได้บ้าง ตำแหน่งเริ่มต้นของระบบ (ป้ายเทา+กุญแจ) ถอดออกไม่ได้ เพิ่มตำแหน่งเสริมได้ (ป้ายฟ้า)
เข้าแท็บ "การอนุมัติ" หาโดเมน "แปลงแพ็คเกจเป็นเครดิต" กดชิป "ผู้จัดการ" ในส่วน "อนุญาตเพิ่มเติม" → "บันทึกผู้อนุมัติ" — แก้ไขได้เฉพาะ admin/super_admin เท่านั้น (กันเพิ่มสิทธิ์อนุมัติให้ตัวเอง) มีผลทันทีทั้งระบบ
การอนุมัติการกระทำอ่อนไหว: ตารางการกระทำกระทบเงิน/สต็อก แต่ละแถว toggle 2 อัน: "ใส่ PIN" และ "ขออนุมัติ"
4. งานผู้ดูแล
3 รายการแรกเกตด้วยสิทธิ์ audit.log.view (หรือ role admin/super_admin/manager/accounting/view_all)
สมหญิง ใจดี ลูกค้า
ลบเมื่อ 20 ก.ค. · เหลือกู้ได้ 88 วัน
ถังขยะกู้คืนได้ 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. แคตตาล็อก: บริการ / หมวดหมู่ / แพ็กเกจ / โปรโมชัน / สะสมแต้ม
เลเซอร์ 5 ครั้ง
สวิตช์เปิด/ปิดบริการ · แพ็กเกจมีป้าย "คอร์ส" + % ส่วนลด · ดูมุมมอง "ทุกสาขา" ปุ่มแก้/ลบถูกปิด (เลือกสาขาก่อน)
กด "เพิ่มบริการ" (catalog.service.create) กรอกชื่อ+หมวดหมู่ (บังคับ เลือกจากที่ตั้งไว้แล้วเท่านั้น สร้างใหม่ที่นี่ไม่ได้)+ราคา+คำอธิบาย → "ยา/เวชภัณฑ์ที่ใช้ในบริการ" เพิ่มสินค้า+จำนวน+หน่วย — ติ๊ก "ไม่บังคับ — เพิ่มตอนใช้จริง" ถ้าใช้ได้หลายยี่ห้อ หรือกำหนด "เพดาน (max)" จำกัดปริมาณต่อเคส → "เปิดให้บริการ" → บันทึก — ผลลัพธ์: เปิดเคสแล้วเลือกบริการนี้ ระบบตัดสต็อกอัตโนมัติตามจำนวนที่ตั้ง
กดลบที่แถวหมวดหมู่ → ระบบแจ้งจำนวนบริการ (12 รายการ) ให้เลือก "ย้ายบริการไปหมวด" ก่อนลบ (ไม่เลือก = ย้ายไป "อื่นๆ" อัตโนมัติ) — บริการ 12 รายการไม่ถูกลบไปด้วย
หมวดโน้ตเคส: ติ๊ก "โน้ตเกี่ยวกับคลัง (แจ้งเคลมสินค้า/อุปกรณ์)" → ทุกโน้ตในหมวดนี้ส่งไปที่คลัง › เคลมสินค้า › "Issue จากเคส" อัตโนมัติ — มีโน้ตใช้หมวดอยู่ ระบบบล็อกการลบและเสนอ "ปิดใช้งานแทน"
"สร้างแพ็คเกจใหม่" เลือกประเภท "เซสชัน/คอร์ส" กรอกชื่อ/คำอธิบาย/รูปปก ตั้งราคาขาย+ราคาเดิม (คำนวณ % ส่วนลดอัตโนมัติ) + ระยะใช้สิทธิ์เป็นวัน → เพิ่มรายการติ๊ก "เลือกได้" พร้อมตัวเลือกอย่างน้อย 2 ยี่ห้อ → ติ๊ก "แสดงในโปรโมชั่น LINE" ถ้าต้องการให้ขึ้นในแอปลูกค้า (ไม่ติ๊ก = ขายได้เฉพาะหน้าเคาน์เตอร์)
ลบแพ็กเกจที่มีลูกค้าซื้อไปแล้ว: ระบบแจ้งลบไม่ได้ — ใช้ปุ่ม "เปิด-ปิดการใช้งาน" แทน ลูกค้าเดิมยังใช้สิทธิ์ที่ซื้อไว้ต่อได้ปกติ
"สร้างแคมเปญ" เลือก "คูปองโค้ด" (ต่างจาก "ใช้อัตโนมัติ") ตั้งส่วนลด เปอร์เซ็นต์ 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 ที่กำลังดำเนินการ |
| ลูกค้าทั้งหมด (ส้ม) | จำนวนลูกค้าลงทะเบียนสะสม |
ส่วนแจ้งเตือน (แสดงเฉพาะเมื่อมีรายการ) — คลิกที่การ์ดเพื่อไปหน้าที่เกี่ยวข้องได้ทันที:
- หมดสต็อก (แดง) → คลิกไปเมนูคลังสินค้า
- สต็อกต่ำ (เหลือง) → คลิกไปเมนูคลังสินค้า
- ใกล้หมดอายุ (ส้ม) → คลิกไปเมนูคลังสินค้า
- วงเงินใกล้หมดอายุ (ม่วง) → คลิกไปหน้ารายงานวงเงินใกล้หมดอายุ
ตาราง 3 คอลัมน์ (เนื้อหาหลัก):
| คอลัมน์ | หัวข้อ | เนื้อหา | ปุ่มมุมขวาบน |
|---|---|---|---|
| 1 | นัดหมายวันนี้ | รายการนัดสูงสุด 6 รายการ พร้อมจุดสี+เวลา+ชื่อบริการ+ป้ายสถานะ | "ดูทั้งหมด" → ไปหน้าการจอง |
| 2 | ยอดขายล่าสุด | ใบเสร็จล่าสุด 5 รายการ พร้อมชื่อลูกค้า/เลขที่ใบเสร็จ+เวลา+ยอดเงิน | "ขายใหม่" → ไปหน้า POS |
| 3 | เคสที่กำลังดำเนินการ | เคส EMR ที่ยังไม่ปิด สูงสุด 5 รายการ พร้อมชื่อลูกค้า+ผู้ให้บริการ | "ดูทั้งหมด" → ไปหน้า EMR |
ป้ายสถานะนัดหมายในคอลัมน์ 1 ใช้คำ: จองแล้ว / ยืนยันแล้ว / เสร็จสิ้น / ยกเลิก / รอดำเนินการ
เมนูด่วน (แถบล่างสุด) — ปุ่มไอคอนกลม 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): รอยืนยัน, ยืนยันแล้ว, เช็คอิน/ให้บริการ, สำเร็จ, ยกเลิก, ไม่มา
ข) มุมมองรายสัปดาห์ — ตาราง 7 วันในสัปดาห์นั้น แต่ละวันแสดงนัดสูงสุด 4 รายการ (เวลา+ชื่อลูกค้า) พร้อมปุ่มเลื่อนสัปดาห์ก่อนหน้า/ถัดไป
ค) มุมมองรายวัน — กริดช่วงเวลา (slot) ของวันนั้น แต่ละช่อง 30 นาทีเป็นการ์ดแสดงสถานะ: ว่าง (เขียว, มีตัวเลขที่นั่งเหลือ เช่น "ว่าง · 2/4"), มีนัด (ฟ้า, แสดงรายชื่อลูกค้าที่จองในช่องนั้น), เต็ม (แดง/ชมพู), ผ่านมาแล้ว (เทา) — ถ้าวันนั้นสาขาปิด/วันหยุด/หมอไม่ออกตรวจ จะขึ้นข้อความ "วันหยุด / ปิดทำการ" หรือ "ผู้ให้บริการไม่ออกตรวจในวันนี้" นัดที่ไม่ตรงกับช่องเวลามาตรฐานจะแสดงแยกในหัวข้อ "นัดอื่น ๆ" มีปุ่มเลื่อนวันก่อนหน้า/ถัดไป และช่องเลือกวันที่โดยตรง
ช่อง 30 นาที · ว่าง (เขียว, มีที่นั่งเหลือ) / มีนัด (ฟ้า) / เต็ม (แดง กดไม่ได้) / ผ่านมาแล้ว (เทา)
ง) มุมมองรายการ (agenda) — แบ่งเป็น 2 ส่วน: รอยืนยัน (จาก LINE) การ์ดพื้นเหลือง แสดงเฉพาะนัดที่มาจาก LINE และยังไม่ยืนยัน มีปุ่ม "ซ่อน/แสดง" ย่อส่วนนี้ได้ แต่ละรายการมีปุ่มดูรายละเอียด (ไอคอนตา) และปุ่มยืนยันด่วน (ไอคอนถูก); และ นัดทั้งหมด/นัดหมายวันนี้/ฯลฯ (หัวข้อเปลี่ยนตามตัวกรองวันที่) จัดกลุ่มตามวันที่ คลิกแถวเพื่อดูรายละเอียด — ด้านขวามีแถบข้าง 2 กล่อง: แพทย์/ห้องตรวจ (จำนวนนัดต่อผู้ให้บริการ) และสถานะ (คำอธิบายสี)
2.3 จองนัดใหม่ — ขั้นตอน
กดปุ่ม "จองนัดใหม่" เปิดหน้าต่างหัวข้อ "จองนัดใหม่":
- เลือกประเภทผู้ป่วย — สลับปุ่ม "คนไข้ในระบบ" / "ลูกค้า Walk-in" · คนไข้ในระบบ: พิมพ์ค้นหาในช่อง "ค้นหาด้วยชื่อหรือเบอร์โทร..." ระบบค้นหาแบบ live พร้อมแสดงเลข OPD ถ้ามี เลือกจากรายการดรอปดาวน์ เมื่อเลือกแล้วชื่อ+เบอร์ลูกค้าจะโชว์เป็นการ์ดสีเขียว (กดกากบาทเพื่อยกเลิกและเลือกใหม่) · ลูกค้า Walk-in: กรอก "ชื่อลูกค้า Walk-in" (บังคับ), "เบอร์โทรศัพท์", "อีเมล (ถ้ามี)"
- กรอกชื่อบริการ — ช่อง "ชื่อบริการ" (พิมพ์อิสระ เช่น "ปรึกษา, ตรวจสุขภาพ")
- เลือกวันที่และเวลา — ช่อง "วันที่" และ "เวลา" หรือคลิกเลือกจากตารางช่วงเวลาว่างที่แสดงด้านล่างฟอร์ม (สีฟ้า=ว่าง, เหลือง=เกือบเต็ม, แดง=เต็ม/กดไม่ได้, เทา=ผ่านมาแล้ว/กดไม่ได้) — ถ้าเลือกผู้ให้บริการแล้ว ตารางจะกรองเฉพาะคิวของผู้ให้บริการคนนั้น ไม่งั้นแสดงคิวรวมทั้งสาขา
- กรอกระยะเวลา (นาที) — ค่าเริ่มต้น 30 นาที
- เลือกช่องทางการจอง — ดรอปดาวน์: Walk-in / โทรศัพท์ / LINE / เว็บไซต์ / อื่นๆ
- เลือกผู้ให้บริการ (เลือกได้) — ดรอปดาวน์รายชื่อหมอ (เฉพาะพนักงานที่มีตำแหน่งเป็น doctor)
- กรอกห้อง (เลือกได้) — เช่น "ห้อง 101"
- หมายเหตุ (เลือกได้)
- กด "จองนัด" เพื่อบันทึก หรือ "ยกเลิก" เพื่อปิดโดยไม่บันทึก
ถ้าบันทึกไม่สำเร็จ ข้อความ error จากระบบจะขึ้นเป็นกรอบสีชมพูภายในฟอร์ม (ไม่ใช่แค่ toast ที่อาจมองไม่เห็น)
2.4 ดูรายละเอียดนัด / เช็คอิน / เริ่มเคส
คลิกที่นัดหมายใดๆ (จากทุกมุมมอง) เปิดหน้าต่าง "รายละเอียดนัด" แสดง: ป้ายสถานะปัจจุบัน · ข้อมูลลูกค้า (ชื่อ, เบอร์โทร, อีเมล, HN) · รายละเอียดนัด (บริการ, วันที่, เวลา, ระยะเวลา, ผู้ให้บริการ, ห้อง, ช่องทางการจอง, สาขา) · หมายเหตุ (ถ้ามี) · วันที่สร้าง/แก้ไขล่าสุด
เริ่มเคสผู้ป่วย (แสดงเมื่อสถานะเป็น จองแล้ว/ยืนยันแล้ว/เช็คอินแล้ว/กำลังให้บริการ):
- มีเคสเปิดแล้ว → กล่องเขียว "สร้างเคสแล้ว" พร้อมเลขที่เคสและปุ่ม "ดูใน EMR"
- ยังไม่มี และนัดยังไม่ผูกกับลูกค้าในระบบ → กล่องเหลืองอำพัน "เริ่มเคส EMR ไม่ได้ (No Customer Profile)"
- พร้อม → กล่องม่วง "เริ่มเคสผู้ป่วย" พร้อมปุ่ม "เช็คอิน + เปิดเคส EMR" (หรือ "สร้างเคส + ไปหน้า EMR" แล้วแต่ค่าคอนฟิกระบบ) — กดแล้วนำไปหน้า EMR อัตโนมัติ
เลื่อนนัด (แสดงเมื่อสถานะเป็น รอดำเนินการ/จองแล้ว/ยืนยันแล้ว): กดปุ่ม "เลือกเวลาใหม่" เปิดหน้าต่าง "เลื่อนนัด" — เลือก "วันที่ใหม่" แล้วเลือกช่วงเวลาจากตารางช่วงเวลาว่าง จากนั้นกด "ยืนยันเลื่อนนัด"
ยกเลิกนัด (แสดงเมื่อยังไม่ใช่ ยกเลิก/เสร็จสิ้น/ไม่มา): กรอก "เหตุผลที่ยกเลิก (เลือกได้)" แล้วกด "ยกเลิกนัด" — หากนัดนี้มาจากระบบจอง/kiosk และชำระเงินแล้ว จะมีคำเตือนสีเหลืองอำพันว่าระบบจะยกเลิกแบบคืนเงินเป็นเครดิตลูกค้าอัตโนมัติ
สมหญิง · ปรึกษาผิว · พรุ่งนี้ 10:30
ยืนยันนัดหมายนัดจาก LINE ค้าง "รอดำเนินการ" จนกดยืนยัน · ยกเลิกนัดที่ชำระผ่าน kiosk = คืนเป็นเครดิตลูกค้าอัตโนมัติ
ยืนยันนัดหมาย (แสดงเฉพาะสถานะ "รอดำเนินการ"): ปุ่มสีเขียว "ยืนยันนัดหมาย" ยืนยันด่วนจากหน้าต่างรายละเอียด
2.5 ตั้งค่าตารางเวลา
เข้าจากปุ่ม "ตั้งค่าเวลา" ในหน้าการจอง หัวข้อหน้า "ตั้งค่าตารางเวลา" มี 4 แท็บ:
| แท็บ | เนื้อหา |
|---|---|
| เวลาทำการ | ตั้งเวลาเปิด-ปิดของแต่ละวันในสัปดาห์ (checkbox เปิด/ปิด + เวลาเริ่ม-สิ้นสุด) กด "บันทึก" |
| วันหยุด | เพิ่มวันหยุด (วันที่, ชื่อวันหยุด, หรือเปิดบางส่วนโดยระบุช่วงเวลา) ลบวันหยุดที่ตั้งไว้ได้ |
| ช่วงเวลาที่ปิด | บล็อกช่วงเวลาเฉพาะ (วันที่ + ช่วงเวลา + เหตุผล เช่น "ประชุม") ลบได้ |
| ความจุห้อง | ตั้งจำนวนคนรับได้พร้อมกันต่อช่วงเวลาของแต่ละห้อง กด "บันทึก" ต่อห้อง |
ผู้ใช้ที่ไม่มีสิทธิ์ booking.manage (ไม่ใช่แอดมิน) จะเห็นข้อความ "คุณกำลังดูแบบอ่านอย่างเดียว — การแก้ไขตารางเวลาทำได้เฉพาะผู้ดูแลระบบ (admin)" และฟอร์ม/ปุ่มบันทึกทั้งหมดจะถูกปิดใช้งาน (เห็นได้แต่แก้ไม่ได้)
4 แท็บ: เวลาทำการ/วันหยุด/ช่วงเวลาที่ปิด/ความจุห้อง · ไม่มีสิทธิ์ booking.manage = อ่านอย่างเดียว (ฟอร์มปิด)
2.6 บทบาทที่ใช้
- เจ้าหน้าที่ต้อนรับ/sale: จองนัด, เลื่อนนัด, ยกเลิกนัด, ยืนยันนัดจาก LINE, เช็คอิน/เริ่มเคส — ใช้งานได้ทุกฟีเจอร์ในหน้าการจอง ยกเว้นแก้ไขตั้งค่าตารางเวลา
- แอดมิน (admin/super_admin หรือมีสิทธิ์
booking.manage): เพิ่มเติมจากด้านบน คือแก้ไขเวลาทำการ/วันหยุด/ช่วงเวลาปิด/ความจุห้องได้ - หมอ: เห็นนัดของตัวเองผ่านมุมมองปฏิทิน (กรองด้วยช่องค้นหาชื่อผู้ให้บริการ) และใช้ปุ่มเริ่มเคส/ดูใน EMR
🧾 ขายหน้าร้าน (POS)
เปิดเคส ขายบริการ/แพ็กเกจ รับชำระเงิน ออกใบเสร็จ ยกเลิก/คืนเงิน
1. ภาพรวมหน้าจอ
เข้าจากเมนู: ขายหน้าร้าน (POS)
หัวหน้าหน้าจอ: "ระบบจุดขาย (POS)" — "เลือกสินค้า/บริการ + เปิดเคส หรือดูเคสรอปิดที่รอดำเนินการ"
หน้าจอแบ่ง 2 ส่วน: ฝั่งซ้าย (2 ใน 3 ของจอ) แท็บโหมดการทำงาน + เนื้อหาตามแท็บ · ฝั่งขวา (1 ใน 3, ปักหมุดอยู่กับที่) ตะกร้าสินค้า "รายการขาย" + ปุ่ม "ชำระเงิน" อยู่ล่างสุดเสมอ
ถ้าล็อกอินแบบเห็นได้ทุกสาขา ("สาขา: ทั้งหมด") จะมีตัวเลือก "ขายที่สาขา:" ให้เลือกสาขาก่อนเริ่มงาน (POS ขายได้ทีละ 1 สาขาเท่านั้น) มีป้ายฟ้า "กำลังขาย: {ชื่อสาขา}" แสดงตลอดเวลา
| แท็บโหมด | ใช้ทำอะไร | เงื่อนไขที่แสดง |
|---|---|---|
| "สร้างเคส + ขาย" (หรือ "ขายสินค้า/บริการ") | เปิดเคสใหม่ + เลือกบริการ/แพ็กเกจขาย | เสมอ |
| "เคสรอปิด" (เลขแดง = จำนวนค้าง) | ดึงเคสที่ยังไม่ปิดบิลมาชำระเงิน | เสมอ |
| "เคสมัดจำ" (เลขเขียว = จำนวน) | ติดตามเคสที่รับมัดจำแล้ว รอเก็บส่วนที่เหลือ | เฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ |
| "พักบิล" (เลขเทา + จุดส้มถ้ามีเงินค้าง) | เปิดบิลที่พักไว้กลางคันมาทำต่อ | เฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ |
ปุ่มมุมขวาบนของแถบแท็บ: "ยกเลิกรายการ" (กรอบแดง) — เปิดหน้าต่างค้นหาเคสเพื่อยกเลิก/คืนเงิน (ดูหัวข้อ 15)
แท็บมี badge จำนวนค้าง (แดง=รอปิด · เขียว=มัดจำ · เทา=พักบิล) · ป้ายฟ้า "กำลังขาย: {สาขา}" (POS ทีละ 1 สาขา)
บทบาทที่ใช้: พนักงานที่มีสิทธิ์เข้าเมนู POS ทุกตำแหน่ง (แคชเชียร์/เซลล์/ต้อนรับ) — ปุ่มและช่องที่ต้องใช้สิทธิ์เพิ่มเติมระบุไว้ในแต่ละหัวข้อ
2. เปิดเคส + ขาย — เลือกลูกค้า
หัวข้อกล่อง: "สร้างเคสใหม่ (เปิดการเข้ารับบริการ)" — หน้านี้ใช้เลือกลูกค้าเท่านั้น (ขั้นมอบหมายหมอ/พยาบาล/ผู้ช่วยระดับเคสย้ายไปหัวข้อ 5.3)
2.1 ค้นหาลูกค้า
ช่องค้นหา ป้าย "ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *" (จำเป็นต้องกรอกก่อนเปิดเคส) placeholder "กรอก HN ชื่อ หรือเบอร์โทร (อย่างน้อย 3 ตัวอักษร)"
- พิมพ์ HN / ชื่อ / เบอร์โทร อย่างน้อย 3 ตัวอักษร — น้อยกว่านั้นขึ้น "กรอกอย่างน้อย 3 ตัวอักษรเพื่อค้นหา"
- ระบบค้นหาอัตโนมัติ (หน่วง 0.3 วิ) แสดงรายชื่อพร้อมป้าย "HN: {เลข HN}" และเบอร์โทร — พบแต่ยังไม่มี HN: ขึ้นเหลืองอำพัน "พบลูกค้าแต่ยังไม่มี HN — ใช้สแกนบัตร/ถ่ายรูปบัตรเพื่อสร้าง HN ใหม่" (เลือกจากรายการตรงๆ ไม่ได้ ต้องสแกนบัตรเท่านั้น) — ไม่พบเลย: "ไม่พบลูกค้าที่ตรงกับ {คำค้นหา}"
- คลิกเลือกชื่อลูกค้าจากรายการ (หรือลูกศรขึ้น/ลง + Enter)
- เลือกแล้ว ช่องค้นหาเปลี่ยนเป็นการ์ดยืนยัน ชื่อ+HN+เบอร์โทร มีปุ่ม X ("เปลี่ยนลูกค้า")
2.2 สแกน/ถ่ายรูปบัตรประชาชน (OCR)
| ปุ่ม | ใช้เมื่อไหร่ |
|---|---|
| "สแกนบัตรประชาชน" (ระหว่างอ่าน: "กำลังอ่านบัตร…") | มีเครื่องอ่านชิปบัตร USB หรือแอป Companion บนแท็บเล็ต |
| "ถ่ายรูป/อัปโหลดบัตร" (ระหว่างอ่าน: "กำลังอ่านรูป…") | ไม่มีเครื่องอ่าน หรือลูกค้าต่างชาติ (ไทย+พาสปอร์ต) |
สแกนบัตรประชาชน (เครื่องอ่านชิป):
- กดปุ่ม → เสียบบัตรในเครื่องอ่าน — Chrome เดสก์ท็อป: "กำลังอ่านบัตร — เสียบบัตรในเครื่องอ่านแล้วเลือกอุปกรณ์..." เบราว์เซอร์ถามเลือกอุปกรณ์ USB · แท็บเล็ต Android (ไม่มี WebUSB): สลับไปแอป Companion อัตโนมัติ "รอเสียบบัตรที่เครื่องอ่าน... (ผ่านแอป Companion บนแท็บเล็ตนี้)"
- อ่านสำเร็จ → ค้นหาลูกค้าอัตโนมัติ 3 ระดับ: พบเลขบัตรตรงกับลูกค้าที่มี HN แล้ว → ผูกทันที ขึ้นเขียว "พบลูกค้าในระบบ — {ชื่อ} (HN: {เลข})" · ไม่พบเลขบัตร แต่ชื่อตรงกับลูกค้าเดิม → กล่องเหลืองอำพัน "ไม่พบเลขบัตรนี้ในระบบ — พบลูกค้าที่ชื่อตรงกัน โปรดยืนยัน" แต่ละรายมีปุ่มเขียว "ใช่คนนี้" (ผูก+บันทึกเลขบัตรอัตโนมัติ) หรือ "ไม่ใช่ — สร้าง HN ใหม่" · ไม่พบเลยทั้งเลขบัตรและชื่อ → เปิดฟอร์มสร้างลูกค้าใหม่อัตโนมัติ
- อ่านไม่สำเร็จ → ข้อความแดง + ปุ่ม "ลองสแกนใหม่" เช่น "อ่านเลขบัตรไม่สำเร็จ", "เบราว์เซอร์นี้อ่านบัตรไม่ได้ — ต้องใช้ 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. เลือกบริการ/แพ็กเกจ
แถบกรองบนสุด: ช่องค้นหา "ค้นหาบริการ / คอร์ส…" (ค้นได้ทั้งชื่อและราคา) · ปุ่มกรองประเภท: ทั้งหมด/บริการ/แพ็คเกจ · ชิปหมวดหมู่ + ชิป "คอร์ส/แพ็กเกจ" ท้ายสุด · ปุ่มสลับรูปแบบการ์ด: รายการ/เล็ก/กลาง (ค่าเริ่มต้น)/ใหญ่ (จำการตั้งค่าในเครื่อง) · ตัวนับผลลัพธ์
ขั้นตอน: แตะการ์ดบริการ/แพ็กเกจ 1 ครั้ง = เพิ่มลงตะกร้าทันที ไม่มีขั้นยืนยัน — แตะซ้ำเพิ่มจำนวนอัตโนมัติ การ์ดแพ็กเกจมีป้าย "คอร์ส" มุมซ้ายบน บริการที่มีสินค้าสิ้นเปลืองผูกอยู่จะมีข้อความ "สินค้าสิ้นเปลือง {N} รายการ" ใต้ชื่อ (ดึงเข้าตะกร้าอัตโนมัติ)
4. ใช้สิทธิ์แพ็กเกจ (Redeem)
ค่าบริการต่อการใช้สิทธิ์: แพ็กเกจบางอย่างคิดค่าบริการทุกครั้งที่มาใช้สิทธิ์ (เช่น ค่าฉีด) ตั้งได้ที่หน้าแพ็กเกจ ช่อง "ค่าบริการต่อการใช้สิทธิ์" — พอพนักงานกดใช้สิทธิ์ ระบบเพิ่มบรรทัดค่าบริการเข้าบิลให้เอง 1 ครั้งต่อการใช้ 1 ครั้ง (ไม่ใช่ต่อหน่วยที่ใช้) เก็บเงินผ่าน POS ตามปกติ และถ้ายกเลิกการใช้สิทธิ์ บรรทัดค่าบริการถูกถอนออกให้ด้วย
สิทธิ์ที่นับเป็นหน่วยย่อย: สิทธิ์ที่ซื้อเป็นขวด/กล่องแล้วใช้ทีละหน่วยย่อย (เช่น ซื้อ 1 ขวด 20 mg ใช้ครั้งละ 2.5 mg) ระบบตัดเฉพาะส่วนที่ใช้จริง ไม่ตัดทั้งขวด และตัดจากขวดประจำตัวของลูกค้าคนนั้นก่อนเสมอ ยอดคงเหลือแสดงเป็นหน่วยย่อย
แสดงเฉพาะเมื่อเลือกลูกค้าแล้ว — หัวข้อกล่อง "สิทธิ์แพ็คเกจของลูกค้า" พร้อมป้าย "{N} แพ็คเกจ" — "กด 'ใช้สิทธิ์' เพื่อเปิด OPD ตัดใช้สิทธิ์ (ไม่คิดเงิน) แล้วให้หมอลงผลการรักษา"
แต่ละแพ็กเกจแสดงชื่อ+วันหมดอายุ(ถ้ามี)+รายการสิทธิ์ย่อย+ยอดคงเหลือ "เหลือ {จำนวน}{หน่วย}" (ถ้าจองไว้จะมี "(จองไว้ {N}{หน่วย})")
- สิทธิ์แบบเลือกได้ (ป้าย "เลือกได้") → ต้องเลือกจากดรอปดาวน์ "— เลือกรายการที่ใช้ —" ก่อน
- สิทธิ์แบบนับหน่วย (เช่น cc/ml) → กรอกจำนวนแล้วกด "ใช้สิทธิ์ {จำนวน} {หน่วย}"
- สิทธิ์แบบนับครั้ง → กด "ใช้สิทธิ์" ตรงๆ (ครั้งละ 1 เสมอ)
- ยืนยันกล่อง "เปิด OPD เพื่อตัดใช้สิทธิ์ ... (ไม่คิดเงิน) ใช่หรือไม่?"
- ระบบเปิดเคส OPD มูลค่า ฿0 ตัดสิทธิ์อัตโนมัติ แล้วพาไปหน้า EMR ของเคสนั้น
ป้าย "เลือกได้" = ต้องเลือกจากดรอปดาวน์ก่อน ปุ่มใช้สิทธิ์ถึงกดได้ · แบบนับหน่วยกรอกจำนวนก่อน
ลูกค้าที่ไม่มีสิทธิ์เหลือเลยขึ้น "ลูกค้ารายนี้ไม่มีสิทธิ์คงเหลือ"
5. ตะกร้าสินค้า ("รายการขาย")
หัวกล่อง "รายการขาย ({จำนวนรายการ})" — ปุ่ม "ล้างตะกร้า" (ต้องยืนยัน) เมื่อมีของในตะกร้า — ตะกร้าว่าง: "ยังไม่มีรายการ / เลือกเคสหรือสินค้า/บริการเพื่อเพิ่ม"
โบท็อกซ์หน้าผาก
฿3,999 × 1
รายการย่อยสินค้าสิ้นเปลืองสีเขียว ฿0 (ต้นทุน ไม่ใช่ยอดขาย) · ปุ่ม −/จำนวน/+ ต่อแถว · ยอดรวม/สุทธิ + ปุ่ม "ชำระเงิน"
5.1 ปรับจำนวน / ลบรายการ
แต่ละบรรทัดมีปุ่ม −/จำนวน/+ และถังขยะ — รายการที่มาจากเคสเดิม (เคสรอปิด) ปรับ/ลบไม่ได้ (ปุ่มเทา ทูลทิป "ปรับจำนวนรายการจากเคสไม่ได้") ต้องแก้ที่ EMR
5.2 สินค้าสิ้นเปลือง (รายการย่อย)
บริการบางรายการดึงสินค้าสิ้นเปลืองผูกมาอัตโนมัติ แสดงเยื้องใต้บริการหลัก พื้นเขียวอ่อน ปรับ/ลบแยกได้ (ราคา ฿0 เป็นรายการต้นทุน ไม่ใช่ยอดขาย)
5.3 ผู้ให้บริการรายการนี้ (หมอ/พยาบาล/ผู้ช่วย ต่อบริการ)
ทุกบรรทัดบริการมีแถบพับเก็บ "ผู้ให้บริการรายการนี้" (ปิดโดยค่าเริ่มต้น):
| บทบาท | ปุ่ม/ป้าย |
|---|---|
| หมอ (เลือกได้ 1 คน) | "เลือกหมอ" / ว่าง = "— เลือกหมอ —" |
| พยาบาล (เลือกได้หลายคน) | "เลือกพยาบาล" / ว่าง = "— ไม่ระบุพยาบาล —" |
| ผู้ช่วย (เลือกได้หลายคน) | "เลือกผู้ช่วย" / ว่าง = "— ไม่ระบุผู้ช่วย —" |
หมอเลือกได้คนเดียว (เลือกใหม่แทนที่คนเดิม) พยาบาล/ผู้ช่วยแตะสลับเลือกได้หลายคน มีปุ่ม "ล้างทั้งหมด" — การเลือกที่นี่มีผลทันที ไม่ต้องรออนุมัติ
ว่าง = ตัวอักษรเทา "— เลือกหมอ —" · เลือกแล้ว = พื้น/กรอบสีตามบทบาท (หมอฟ้า · พยาบาลชมพู · ผู้ช่วยม่วง)
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 ทั้งบิล | แยกเป็นยอด "ส่วนลดท้ายบิล" ในรายงานสรุปยอดขาย ไม่ไปเกลี่ยลงรายการ |
ดรอปดาวน์: ไม่คิด (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) มีแถบเด่น "ใช้กระเป๋าเงินสมาชิก"
เลือกได้หลายช่องทางในบิลเดียว · ปุ่ม "ชำระเงิน" กดไม่ได้จนยอดจัดสรรครบ (มีข้อความ "ขาดอีก ฿…" เสมอ) · บัตร/โอน แบ่งจ่ายหลายใบด้วย −/+
10.1 เงินสด
ช่อง "รับเงินสด (ยอดชำระด้วยเงินสด: ฿{X}) *" + ปุ่มลัด "ใช้ยอดพอดี" — เกิน: "เงินทอน: ฿{X}" · น้อยกว่า: "เงินสดไม่พอ ขาดอีก ฿{X}" (ยืนยันไม่ได้จนครบ)
รับมากกว่ายอด = "เงินทอน" อัตโนมัติ · น้อยกว่า = "เงินสดไม่พอ ขาดอีก ฿…" (ยืนยันไม่ได้จนครบ)
10.2 เงินโอน
"ช่องทางรับเงินโอน" — คลินิกที่ใช้ Beam เลือกรับผ่านเครื่อง (QR พร้อมเพย์/K PLUS/SCB EASY/Krungsri/Bangkok Bank/MAKE by KBank) หรือติ๊ก "รับโอนตรงเข้าบัญชีคลินิก (แนบสลิป — ไม่ผ่านเครื่อง Beam)" — แนบสลิป (ไม่บังคับ, แนบทีหลังได้) ไม่แนบสลิปไม่บล็อกการชำระเงิน
10.3 บัตรเครดิต
"รายละเอียดบัตรเครดิต" เลือก "ธนาคารที่รับชำระ" และ "ผ่อนกี่เดือน" (เต็มจำนวน / ผ่อน 3, 6, 10 เดือน / กำหนดเอง)
ธนาคารมาจากรายการที่แอดมินตั้งไว้ · งวดผ่อน เต็ม/3/6/10/กำหนดเอง
10.4 QR พร้อมเพย์
- "กำลังสร้าง QR PromptPay…"
- QR ขึ้น "สแกนพร้อมเพย์เพื่อชำระ ฿{ยอด}" ตรวจสอบทุก 3 วินาที — ไม่ต้องกดยืนยันเอง
- จ่ายสำเร็จ → "ชำระเงินสำเร็จ ✓" ไปหน้าใบเสร็จอัตโนมัติ
- หมดเวลา/ไม่สำเร็จ → "QR หมดอายุแล้ว" / "ชำระเงินไม่สำเร็จ" + ปุ่ม "สร้าง QR ใหม่"
สแกนพร้อมเพย์ ฿6,499
● ตรวจสอบทุก 3 วิ (อัตโนมัติ)
ไม่ต้องกดยืนยันเอง · จ่ายสำเร็จ = "ชำระเงินสำเร็จ ✓" ไปใบเสร็จอัตโนมัติ · หมดเวลา = ปุ่ม "สร้าง QR ใหม่"
10.5 ชำระผ่านเครื่อง Beam (ทีละรายการ)
เฉพาะคลินิกที่เปิดใช้เครื่องรับบัตร/QR Beam Bolt — หลักการ: เงินสดรับที่เคาน์เตอร์โดยตรง ส่วนที่เหลือ (บัตร/QR/e-wallet/โอน) ผ่านเครื่องทีละรายการ
แบ่งจ่ายหลายใบ: แต่ละช่องทางมีปุ่ม −/+ ป้าย "แบ่งจ่าย … ใบ" (เช่น จ่าย 2 บัตร แยกธนาคาร/เดือนผ่อนได้)
- สถานะเริ่มต้น: ปุ่ม "ส่งไปที่เครื่อง"
- กำลังส่ง: "กำลังส่งไปที่เครื่อง…"
- รอลูกค้าจ่าย: "รอลูกค้าชำระที่เครื่อง Beam — ระบบยืนยันอัตโนมัติ" (มีปุ่ม "ยกเลิก")
- สำเร็จ: "{รายการ} · ฿{ยอด} — ชำระที่เครื่องสำเร็จ ✓" → บันทึกลงบิลอัตโนมัติ → "ชำระและบันทึกแล้ว ✓"
- เครื่องรับเงินสำเร็จแต่บันทึกลงบิลไม่สำเร็จ (พบยากแต่สำคัญ) → "เงินเข้าที่เครื่องแล้ว แต่บันทึกลงบิลไม่สำเร็จ" + "ห้ามให้ลูกค้าชำระซ้ำ — กด 'บันทึกอีกครั้ง' เท่านั้น"
ต้องทำทีละรายการตามลำดับ ครบทุกรายการปุ่มยืนยันเปลี่ยนเป็น "เสร็จสิ้น (ชำระผ่านเครื่องครบแล้ว)" — ปิดหน้าต่างระหว่างยังชำระไม่ครบ ระบบเตือนก่อนเสมอ (เงินที่รับแล้วไม่หายแม้ปิดหน้าจอ บิลจะค้างเป็น "เคสรอชำระ")
10.6 กระเป๋าเงินสมาชิก / เครดิตลูกค้า
ต้องเลือกลูกค้าที่เป็นสมาชิกก่อน (ใช้กับ Walk-in ไม่ได้) แสดงยอดคงเหลือก่อนติ๊กใช้ — ยอดไม่พอขึ้น "เครดิตไม่พอ — ขาดอีก ฿{X}" ต้องเลือกช่องทางอื่นจ่ายส่วนที่ขาด — บางระบบมีสวิตช์ "ใช้โบนัส" แยกหักเครดิตโบนัสกับเครดิตเงินสด
กระเป๋าเงินสมาชิก
เงินสด ฿5,000 · โบนัส ฿1,200
สมาชิกเท่านั้น (Walk-in ใช้ไม่ได้) · ยอดไม่พอ = "เครดิตไม่พอ — ขาดอีก ฿… กรุณาเลือกชำระส่วนที่ขาดด้วยวิธีอื่น" ต้องเสริมช่องทางอื่น · สวิตช์แยกเงินสด/โบนัส
10.7 ช่องทางอื่น (เพิ่มเอง)
เช่น ทรูวอลเล็ท คูปอง/บัตรกำนัล — ปุ่ม "เพิ่มช่องทางอื่น" กรอกประเภท/ชื่อช่องทาง/จำนวนเงิน/เลขอ้างอิงต่อแถว ลบแถวด้วย X — โหมดละเอียด (หลายรายการ/หลายสลิป): แยกช่องทางเดียวเป็นหลายบรรทัดพร้อมเลขอ้างอิง/สลิปต่อบรรทัด (ใช้ร่วมกับกระเป๋าเงินสมาชิก/เครดิตลูกค้าไม่ได้ ต้องปิดโหมดนี้ก่อน)
10.8 หมายเหตุ / ออกบิลย้อนหลัง
ช่อง "หมายเหตุ" พิมพ์อิสระ — ผู้มีสิทธิ์ "ออกบิลย้อนหลัง" (pos.sale.backdate) เห็นช่อง "วันที่ใบเสร็จ/ใบกำกับภาษี (ออกย้อนหลัง)" (เลือกวันที่ในอดีตได้เท่านั้น พร้อมคำเตือนว่าจะลงบัญชี/ภาษีตามวันที่เลือก)
10.9 ยืนยันชำระเงิน
ปุ่มล่างสุดเปลี่ยนข้อความตามโหมด: "ยืนยันการชำระเงิน" / "ยืนยันชำระบางส่วน" / "ยืนยันรับมัดจำ" / "เข้ารับบริการก่อน (ยังไม่ชำระ)" — กดไม่ได้จะมีข้อความอธิบายเสมอว่าขาดอะไร ไม่มีทางเจอปุ่มค้างกดไม่ได้โดยไม่รู้สาเหตุ
ข้อความปุ่มตามโหมด (ชำระเต็ม/บางส่วน/มัดจำ/เข้ารับก่อน) · กดไม่ได้ = จาง + บอกเหตุผลเสมอ
11. พักบิล (Hold Bill)
เฉพาะระบบที่เปิดใช้ฟีเจอร์นี้ — ใช้เมื่อยังตัดสินใจช่องทางชำระไม่ได้ หรือลูกค้าต้องออกไปก่อน
พักบิล (จากหน้าต่างชำระเงิน): ปุ่มโปร่ง "พักบิล (เก็บไว้ทำต่อทีหลัง)" → กรอกหมายเหตุ (ไม่บังคับ) → "พักบิลไว้" — เงินที่กดชำระผ่านเครื่องไปแล้วบางส่วนจะไม่หาย
ทำต่อ (จากแท็บ "พักบิล"): แต่ละบิลแสดงเป็นการ์ด ชื่อลูกค้า/HN, ยอดรวม, สถานะชำระ — กด "ทำต่อ":
- ชำระครบแล้ว รอออกบิล: กด "เสร็จสิ้น — ออกบิล"
- ยังมียอดค้าง: เลือกช่องทาง หรือกด "รับส่วนที่เหลือเป็นเงินสด ฿{X} แล้วออกบิล"
- ยกเลิกบิลที่พักไว้: ปุ่ม "ยกเลิกรายการ (คืนเงิน)" (ถ้ามีเงินเข้าเครื่องแล้ว เปลี่ยนเป็น "ยกเลิก/คืนเงิน (ผ่านหน้ายกเลิกเคส)")
พยายามปิดหน้าต่างทั้งที่ชำระครบแล้วแต่ยังไม่ได้ออกบิล ระบบเตือนก่อนเสมอ ให้เลือก "เสร็จสิ้น — ออกบิลเลย" หรือ "ปิดไว้ก่อน (เก็บในแท็บพักบิล)"
12. ใบเสร็จ (หลังชำระเงินสำเร็จ)
หัวข้อ "ชำระเงินสำเร็จ" แสดงรหัส/เลขที่การขาย เลขที่ใบเสร็จ สรุปรายการ (สินค้า/เวชภัณฑ์ไม่ขึ้นให้ลูกค้าเห็นในใบสรุปนี้ แต่บันทึกในระบบครบ) และยอดชำระ
| ปุ่ม | ทำอะไร |
|---|---|
| "เปิด OPD ต่อ" | เฉพาะบิลที่มีบริการ/แพ็กเกจ — พาไปหน้า EMR เปิดเคสต่อทันที |
| "พิมพ์ใบเสร็จ" | ส่งพิมพ์ไปเครื่องพิมพ์ใบเสร็จ (thermal) อัตโนมัติ ไม่มีเครื่องพิมพ์ตั้งค่าไว้จะเปิดหน้าต่างพิมพ์ของเบราว์เซอร์แทน — ใบแรกเป็นต้นฉบับ ไม่มีตรา "สำเนา" |
| "ส่งใบเสร็จ LINE" | ส่งใบเสร็จให้ลูกค้าทาง LINE |
| "ขายใหม่" | ล้างหน้าจอเริ่มขายบิลถัดไป |
| ปิด (X) | ปิดหน้าต่างเฉยๆ ไม่มีผลอะไรเพิ่ม |
พิมพ์ซ้ำภายหลัง (จากเมนูค้นหาใบเสร็จ/รายงาน) จะมีแถบ "สำเนา (COPY)" + "พิมพ์ซ้ำครั้งที่ {N}" กำกับเสมอ
13. เคสรอปิด
ค้นหาด้วยหมายเลข: ช่อง "ค้นหาข้อมูลการเข้ารับบริการ (Visit Case)" placeholder "กรอกหมายเลขเคส..."
แต่ละการ์ดแสดงชื่อบริการ/แพ็กเกจเด่นเป็นหัวการ์ด เลขเคสย่อเป็นชิปเล็ก พร้อมเวลาเปิดเคสและป้าย "ค้าง {ชม./วัน}" (เหลือง ≥8 ชม., แดง ≥24 ชม.) ชื่อลูกค้า/HN, ผู้ให้บริการ, "ยอดค้างชำระ" ตัวใหญ่ (ถ้าจ่ายบางส่วนแล้ว: "ชำระแล้ว ฿X / รวม ฿Y") เคสมีมัดจำมีชิป "มัดจำ ฿{X}"
ขั้นตอน: คลิกการ์ด → รายการทั้งหมดถูกดึงเข้าตะกร้าอัตโนมัติ (ผูกลูกค้าให้ทันที) → กด "ชำระเงิน" ตามปกติ
ปุ่มบนการ์ด (ไม่ต้องเปิดเคสก็กดได้): "ปิดเคส" (ปิดสถานะแม้ยังมียอดค้าง มีกล่องยืนยันบอกยอดค้างก่อนปิด) · "ยกเลิก" (เปิดหน้ายกเลิกบิล/คืนเงิน — หัวข้อ 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)"
- ระบบโหลดรายการที่ขายไปในบิลนั้น ("รายการที่ต้องการคืน") — เลือกไว้ให้ครบทุกรายการโดยอัตโนมัติ (คืนเต็ม) หรือปรับเองได้
- คืนเงินบางส่วนได้ — ปรับ "จำนวนที่คืน:" ต่อรายการด้วย −/+ และปุ่ม "เลือกทั้งหมด"/"ยกเลิกทั้งหมด"
- รายการที่เป็นสินค้า ต้องเลือก "สภาพสินค้า (กำหนดการคืนสต็อก):" — "ซีล/ไม่ได้เปิด — คืนสต็อก" / "เปิดแล้ว — ตัดทิ้ง (Waste)" / "เสียหาย — ตัดทิ้ง (Waste)"
- เลือก "วิธีคืนเงิน" — เงินสด / บัตรเครดิต-เดบิต / เครดิตในระบบ (Store Credit) (ไม่จำเป็นต้องตรงกับช่องทางที่จ่ายมาตอนแรก)
- ติ๊ก "ยกเลิก Commission ของพนักงาน" ถ้าต้องการยกเลิกค่าคอมมิชชั่นที่ผูกกับบิลนี้ด้วย
- กรอกเหตุผล (บังคับ) → "ดำเนินการคืนเงิน" → ยืนยัน → "ยืนยัน คืนเงิน"
- สำเร็จ → "คืนเงินสำเร็จ" พร้อมสรุปยอดคืนและรายการที่คืน
15.4 ยกเลิก (ไม่คืนเงิน) — เฉพาะแอดมิน
ใช้เมื่อบิลชำระเงินแล้วแต่คีย์ผิดคน — ยกเลิกโดยไม่คืนเงินและไม่เข้าเครดิตลูกค้า เงินยังคงถูกบันทึกเป็นรายรับตามเดิม พนักงานต้องคีย์รับเงินใหม่ให้ลูกค้าที่ถูกต้องแยกที่ POS
กรอก "เหตุผล *" และ "รหัสพนักงาน *" (PIN บังคับเสมอสำหรับบิลที่ชำระแล้ว) กด "ยืนยัน ยกเลิก (ไม่คืนเงิน)" — PIN ผิดหรือไม่มีสิทธิ์ขึ้น "รหัสพนักงานไม่ถูกต้อง หรือไม่มีสิทธิ์ (เฉพาะแอดมิน)"
16. สรุปบทบาท/สิทธิ์ที่เกี่ยวข้อง
| การทำงาน | ใครใช้ได้ |
|---|---|
| ขายทั่วไป, เปิดเคส, เลือกลูกค้า/สแกนบัตร, ใช้สิทธิ์แพ็กเกจ, รับชำระทุกช่องทาง, ยกเลิกบิลที่ยังไม่ชำระ, คืนเงินบิลที่ชำระแล้ว (มีเงื่อนไข PIN ถ้าตั้งไว้) | พนักงาน POS ทุกตำแหน่งที่มีสิทธิ์เข้าเมนู |
| กำหนด "ผู้ขาย (Sale)" เป็นคนอื่นแบบมีผลทันที (ไม่ต้องรออนุมัติ) | ผู้มีสิทธิ์ rbac.permission.manage หรือ super_admin — พนักงานทั่วไปเลือกได้แต่ต้องรออนุมัติ |
| แก้ไขยอดสุทธิทั้งบิล | แอดมิน (admin / super_admin) |
| ยกเลิก (ไม่คืนเงิน) สำหรับบิลชำระแล้ว | แอดมินเท่านั้น (พนักงานทั่วไปเห็นปุ่มแต่กดไม่ได้) |
| ออกบิลย้อนหลัง (เลือกวันที่ใบเสร็จเอง) | ผู้มีสิทธิ์ pos.sale.backdate |
| แก้ไขราคาแมนนวลต่อรายการ | ต้องระบุเหตุผลทุกครั้ง (บันทึกประวัติ ไม่จำกัดเฉพาะแอดมิน ขึ้นกับสิทธิ์ที่ระบบตั้งไว้) |
📋 ประวัติการรักษา (EMR)
เคสการรักษา, ชาร์ต, บันทึกแพทย์, ยินยอม และการปิดเคส
0. เข้าถึงเมนู
เข้าจากเมนู: กลุ่ม งานประจำวัน → ประวัติการรักษา (EMR)
เมนูนี้แสดงเฉพาะบทบาท หมอ / พยาบาล / ผู้ช่วย / BT (และเภสัชกร) — ระบบเรียกกลุ่มนี้ว่า persona "คลินิก" ผู้ใช้ role admin/super_admin เห็นเมนูเต็มเสมอ ส่วนบทบาทอื่น (ฝ่ายขาย/แคชเชียร์/ธุรการ) จะไม่เห็นเมนูนี้ในแถบด้านข้าง
- จอกว้าง (desktop/tablet แนวนอน): เห็น "รายชื่อคนไข้" (patient roster) 2 คอลัมน์ — รายชื่อซ้าย + รายละเอียดขวา
- จอแคบ (มือถือ/tablet แนวตั้ง): เห็น "EMR · เคส" (case worklist) แบบ list เต็มจอ พร้อมแถบ เคสของฉัน / ทั้งหมด
ทั้งสองอุปกรณ์เชื่อมเข้าเคสเดียวกัน และหน้ารายละเอียดเคสเป็นหน้าเดียวกันไม่ว่าจะเข้าจากทางไหน
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) จะเห็นชิปนิ่ง "เคสของฉัน" อันเดียว ไม่มีปุ่ม "ทั้งหมด" ให้กด
นโยบาย "own" = ชิปม่วงอ่อน+ไอคอนกุญแจ ไม่มีปุ่ม "ทั้งหมด" · ว่าง → ปุ่ม "ดูเคสทั้งหมด" เสมอ ไม่ปล่อยหน้าเปล่า
สถานะรายการว่างมีทางออกเสมอ: ขอบเขต "เคสของฉัน" ว่าง → "วันนี้ยังไม่มีเคสที่มอบหมายให้คุณ" + ปุ่ม "ดูเคสทั้งหมด (N)" / "เมื่อวาน" / "7 วันล่าสุด" · ขอบเขต "ทั้งหมด" ว่าง → "ไม่มีเคสใน [ช่วงวันที่]" + ปุ่ม "กลับวันนี้" และ "เปิดเคสที่ POS" (ถ้ามีสิทธิ์)
บัญชีที่ยังไม่ได้ผูกกับพนักงานในระบบ (ทั้งสองอุปกรณ์) จะเห็นการ์ดเหลืองอำพัน "บัญชีของคุณยังไม่ได้ผูกกับพนักงาน จึงยังไม่เห็นรายการเคส/เคส — กรุณาแจ้งแอดมินให้ผูกบัญชีกับพนักงานในระบบ" แทนรายการว่างเปล่า
2. เปิดเคส — ส่วนหัวคนไข้
จอกว้าง: เมื่อเลือกคนไข้จากรายชื่อ จะมีการ์ดเต็มความกว้างขึ้นด้านบน (ก่อนแผงรายละเอียด) แสดง: ชื่อ+ชื่อเล่น+ระดับสมาชิก(tier)+HN · เพศ/อายุ, กรุ๊ปเลือด, มาล่าสุด · ป้ายแพ้ยาสีแดง (ถ้ามี) · แถบสัญญาณชีพล่าสุด (ความดัน/ชีพจร/อุณหภูมิ/น้ำหนัก/ส่วนสูง — ยังไม่มีข้อมูลขึ้น "ยังไม่มีบันทึกสัญญาณชีพ — เปิด OPD เพื่อบันทึก") · ปุ่ม "เปิด OPD" มุมล่างขวา (disable ถ้าคนไข้ยังไม่มี visit เลย)
ใต้การ์ดนี้เป็น "ประวัติการเข้ารับบริการ (N)" แบบ timeline — แต่ละแถวมีวันที่/ผู้ให้บริการ/ป้ายสถานะ (กำลังดำเนินการ / รอชำระ / ชำระแล้ว · รอปิดเคส / ปิดเคสแล้ว / ยกเลิก / ยกเลิก (ไม่คืนเงิน) / คืนเงินแล้ว), เลขเคส, การวินิจฉัย, บันทึก, ชิปบริการ/แพ็คเกจ และปุ่ม "เปิดเคส"
การ์ดหัว = ชื่อ+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 ฝ่ายขาย/แอดมินเท่านั้นเห็นกล่อง "ยอดรวมเคสนี้" (฿) มุมขวาบน — บทบาทคลินิก (หมอ/พยาบาล/ผู้ช่วย) จะไม่เห็นตัวเลขเงินตรงนี้
ปุ่มปรากฏตามสถานะเคส · ปิดเคส (เขียว) เมื่อไม่มียอดค้าง · ส่งไปชำระเงิน (ฟ้า) เมื่อมียอดค้าง → คิว POS
3.2 แถบทีมผู้ดูแล / ผู้ทำ
อยู่ใต้ส่วนหัวติดจอทันที แสดงชื่อจริงของทีมที่รับผิดชอบเคส แยกป้ายตามบทบาท หมอ: / พยาบาล: / ผู้ช่วย: (ไม่แสดงคำว่า "ฝ่ายขาย" ในตำแหน่งผู้ทำ) ถ้าแต่ละบริการมีผู้ทำต่างกัน จะมีป้าย "ผู้ทำต่างกันรายบริการ" และปุ่ม "แยกรายบริการ"
ปุ่มด้านขวา: "ทีมงานเคส" (แก้ทีมที่ใช้ร่วมกันทั้งเคส) และ "เปลี่ยนเซลล์" (ขอเปลี่ยนพนักงานขายผู้ดูแล — ต้องรอ super_admin อนุมัติ ระหว่างรอขึ้นป้าย "รอยืนยันเซลล์")
3.3 แท็บทั้ง 4
| แท็บ | label บนจอ |
|---|---|
| Chart & บันทึก | "ชาร์ต & บันทึก" |
| Orders & Billing | "รายการ & บิล" |
| Patient Info | "ข้อมูลคนไข้" |
| Consent | "ยินยอม" |
4. แท็บ "ชาร์ต & บันทึก"
ชาร์ตใบหน้า — เลเยอร์ของแต่ละคน: หมอแต่ละคนวาดบนเลเยอร์ของตัวเอง คนอื่นเปิดดูได้แต่แก้ทับไม่ได้ (ระบบจะแจ้งว่าแก้ได้เฉพาะเลเยอร์ของตัวเอง) — จึงต้องล็อกอินด้วยบัญชีของตัวเองเสมอ ถ้าใช้บัญชีกลางร่วมกัน ทั้งภาพวาดและค่ามือจะลงผิดคน
4.1 สัญญาณชีพ
การ์ดแรกของแท็บ แสดง 6 ช่อง: น้ำหนัก(kg), ส่วนสูง(cm), BMI (คำนวณอัตโนมัติ), ชีพจร(/min), ความดัน (mmHg แยก sys/dia), อุณหภูมิ(°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) ไม่ดึงเข้าอัตโนมัติ ต้องกดเลือกเองว่าใช้ตัวไหนจริง
ล็อตค่าเริ่มต้น = ใกล้หมดอายุสุด (FEFO) · ล็อตไม่พอ ดึงจากล็อตถัดไปเอง · สต็อกไม่พอเลย = dialog "ขายก่อนรับเข้า"
4.4 ภาพเปรียบเทียบ Before / After
ส่วนแยกสำหรับอัปโหลด/จัดการรูป กรอบ "ก่อนทำ" (จุดส้ม) กับ "หลังทำ" (จุดเขียว) พร้อมวันที่ถ่าย ปุ่ม "ดูรูปเต็ม / เทียบ" เปิดตัวดูภาพ side-by-side พร้อมแถบเลื่อนเทียบ (drag slider) และปุ่ม "เปิดเครื่องมือ Before / After"
ก่อนทำ
หลังทำ
ก่อนทำ (จุดส้ม) / หลังทำ (จุดเขียว) + วันที่ถ่าย · "ดูรูปเต็ม/เทียบ" เปิด side-by-side + drag slider · แยก session ได้
5. แท็บ "รายการ & บิล"
5.0 รายละเอียดการชำระเงิน — เงินมาจากไหนบ้าง
ใต้รายการ มีกล่อง "รายละเอียดการชำระเงิน" แยกให้เห็นว่ายอดที่จ่ายมาแล้วมาจากทางไหน — สำคัญตอนกระทบยอดปลายวัน เพราะเงินคนละทางลงคนละที่
| บรรทัดที่เห็น | หมายถึง | ข้อควรรู้ |
|---|---|---|
| ยอดชำระสุทธิ | เงินที่รับมาแล้วทั้งหมดของเคสนี้ | รวมทุกช่องทางรวมกัน |
| มัดจำ | เงินรับล่วงหน้าที่เก็บไว้ก่อนหน้า | ยังไม่ถือเป็นรายได้จนกว่าจะมารับบริการ |
| มัดจำจองออนไลน์ | ลูกค้าจ่ายมัดจำตอนจองผ่านออนไลน์/ตู้ | เข้ามาก่อนคนไข้จะมาถึงคลินิก |
| ชำระที่ตู้ | จ่ายที่ตู้บริการตนเอง ไม่ได้ผ่านเคาน์เตอร์ | เงินเข้าระบบแล้ว ไม่ต้องเก็บซ้ำ — ถ้าเห็นบรรทัดนี้ อย่าเรียกเก็บอีก |
5.1 เพิ่มการชำระเงินจากหน้าเคส
ปุ่ม "เพิ่มการชำระเงิน" ใช้บันทึกเงินที่รับมาจริงแล้ว โดยไม่ต้องกลับไปที่ POS — เช่น ลูกค้าโอนเพิ่มทีหลัง หรือจ่ายส่วนที่ค้างตอนกลับมาอีกวัน
- เลือก ช่องทาง / ที่มาของเงิน + ใส่ จำนวนที่ได้รับจริง (ไม่ใช่ยอดที่ควรได้)
- กด "เพิ่มช่องทางชำระ (แบ่งจ่าย)" ถ้ารับมาหลายทางในครั้งเดียว — ระบบรวมยอดให้ที่บรรทัด "รวมที่จะบันทึก"
- แนบสลิป (ไม่บังคับ) — แต่ถ้าเป็นเงินโอน ควรแนบทุกครั้ง ไม่งั้นตรวจย้อนหลังไม่ได้ว่าเงินก้อนไหน
5.2 ของไม่พอในสต็อกแต่ต้องจ่ายออก
ถ้าจ่ายของที่ยอดสต็อกไม่พอ ระบบจะขึ้น "สต๊อกไม่พอ — ขายก่อนรับเข้า" พร้อมปุ่ม "ยืนยันจ่ายออก และตั้งรายการค้างรับ"
- ระบบไม่บล็อก — เพราะหน้างานของจริงอาจมาถึงก่อนเอกสาร
- แต่จะตั้งรายการค้างรับไว้ เพื่อให้ฝ่ายคลังตามรับเข้าให้ตรงทีหลัง สต็อกจะได้กลับมาตรง
- ยืนยันแล้วระบบบันทึกว่าจ่ายออกไปแล้ว — ไม่ใช่การข้ามการตัดสต็อก
- แถบยอดรวมเคสนี้ (พื้นม่วง) — แยกบริการ/สินค้า/แพ็คเกจ พร้อมปุ่ม "ปิดเคส" หรือ "ส่งไปชำระเงิน" (บทบาทคลินิกเห็นยอดเป็น "—" price-gated)
- โน้ตเคส — บันทึกภายใน ไม่แสดงให้ลูกค้าเห็นและไม่ขึ้นใบเสร็จ เลือกหมวดหมู่เป็นชิป (เช่น 🎬 รีวิว/KOL) พิมพ์ข้อความ กด "บันทึก" — หมวดที่ติดธง "เกี่ยวกับคลัง" มีป้าย "เคลม" สีแดงและถูกส่งต่อไปหน้าคลัง › เคลมสินค้าอัตโนมัติ
- บริการ — รายการบริการของเคส แต่ละแถวมีแถบ "ผู้ทำ" เลือกหมอ/พยาบาล/ผู้ช่วยที่ทำบริการนั้น (ยังไม่เลือกแถบเปลี่ยนเหลืองอำพัน "ยังไม่ระบุผู้ทำ") เคสปิดแล้วแสดงชื่อแบบอ่านอย่างเดียว (แก้ไขได้เฉพาะแอดมิน) ปุ่ม + มุมบนขวาเพิ่มบริการใหม่
- แพ็คเกจ — รายการแพ็คเกจที่ขายในเคสนี้ ไอคอน "แทนที่แพ็คเกจ" (สลับแพ็คเกจที่คีย์ผิดโดยรักษามูลค่าเดิม) และไอคอนถังขยะลบรายการ
- แถบอัปโหลดสลิป (ถ้ามี) — ช่องหมายเหตุ + ปุ่ม "อัปโหลดสลิป"
6. แท็บ "ข้อมูลคนไข้"
ปุ่ม "ดูประวัติการรักษา" มุมขวาบน — เปิด modal ดูทุก visit ในอดีตของคนไข้คนนี้โดยไม่ต้องออกจากเคส
ประวัติสุขภาพ + แพ้ยา — กล่องนี้เป็นข้อมูลของตัวคนไข้ ไม่ใช่ของเคสนี้ แก้ที่นี่แล้วมีผลกับทุกเคสในอนาคต ไม่ใช่แค่ครั้งนี้
แพ็คเกจ & สิทธิ์คงเหลือ — หัวข้อย่อย "สิทธิ์คงเหลือของลูกค้า" แสดงทุกแพ็คเกจ/entitlement พร้อมวันหมดอายุ แต่ละรายการมีปุ่ม "ใช้สิทธิ์" (แลกใช้แบบ ฿0 — หน่วยวัด ml/cc/units ใช้สิทธิ์เป็นเศษได้แล้ว เช่น 2.5cc (เพิ่งเปิด) ส่วนหน่วย "ครั้ง/session" ยังใช้เป็นจำนวนเต็ม) และปุ่ม "โอนสิท" (โอนสิทธิ์คงเหลือไป HN อื่น) — ไม่มีสิทธิ์เหลือเลยแสดง "ลูกค้ายังไม่มีสิทธิ์คงเหลือ"
Filler Program
เหลือ 3 ครั้ง · หมดอายุ 12/2569
"ใช้สิทธิ์" = แลกแบบ ฿0 (หน่วย ml/cc ใช้เศษได้ · ครั้ง/session เต็มจำนวน) · "โอนสิท" = โอนสิทธิ์คงเหลือไป HN อื่น
หมายเหตุ: แถบ "ทีมผู้ดูแล" ที่เคยอยู่ในแท็บนี้ถูกย้ายขึ้นไปอยู่ใต้ส่วนหัวติดจอแล้ว (ดูข้อ 3.2)
7. แท็บ "ยินยอม" (Consent)
แท็บนี้ไม่แสดงถ้าโมดูลใบยินยอมปิดอยู่ (degrade เป็นว่างเปล่าแทนการพัง) เนื้อหาแบ่ง 3 ส่วน:
- เซ็นแล้วในเคสนี้ — รายการใบยินยอมที่เซ็นแล้ว (ทั้งเซ็นบน iPad และแบบสแกนกระดาษ) แต่ละรายการมีลิงก์ "ดู PDF/รูป"
- เลือกแม่แบบหนังสือยินยอม — ตารางเทมเพลตพร้อมตัวอย่างฟอร์ม แยกหมวด ทั่วไป/หัตถการ/ยาชา/ถ่ายภาพ แต่ละใบมีปุ่ม "เลือก & เซ็น" (หรือ "เซ็นแล้ว")
- อัปโหลดฟอร์มที่เซ็นแล้ว (JPG/PDF) — สำหรับคนไข้ที่เซ็นบนกระดาษออฟไลน์ อัปโหลดสแกนเข้าระบบ
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=0 | crm.sms.broadcast |
| ประวัติแคมเปญ | ไปหน้ารายการแคมเปญ SMS ที่เคยส่งไปแล้ว | เหมือน ส่ง SMS |
1.2 การ์ดสรุป (4 การ์ด)
| การ์ด | แสดงอะไร |
|---|---|
| ลูกค้าทั้งหมด | จำนวนลูกค้าทั้งหมดในระบบ |
| ลูกค้าใหม่เดือนนี้ | จำนวนลูกค้าที่ลงทะเบียนเดือนนี้ (สีเขียว) |
| สมาชิก VIP (Gold + Platinum) | ยอดรวม VIP พร้อมแยกย่อย Platinum/Gold/Silver/Bronze |
| มาใช้บริการล่าสุด (30 วัน) | จำนวนลูกค้าที่มาใช้บริการใน 30 วันล่าสุด |
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) + สลับ แบ่งหน้า/เลื่อนต่อเนื่อง — คลิกแถวลูกค้าเปิดหน้าต่างรายละเอียด
ป้ายระดับ Bronze/Silver/Gold/Platinum สีตามจริง · ป้าย "ใหม่" (<30 วัน) · คลิกแถวเปิดหน้าต่างรายละเอียด
1.5 ฟอร์มเพิ่ม/แก้ไขลูกค้า
แบ่ง 6 แท็บย่อย:
- ข้อมูลทั่วไป — ชื่อ, นามสกุล, ชื่อเล่น(บังคับ), รู้จักเราจากช่องทางไหน, เบอร์โทรศัพท์(บังคับ), อีเมล, เลขที่ OPD (สร้างใหม่: Auto/Manual), ระดับลูกค้า (Tier) — ตอนสร้างใหม่มีปุ่ม "อ่านบัตรประชาชน" ผ่านเครื่องอ่านที่เครื่อง (ไม่ทับข้อมูลที่พิมพ์ไว้แล้ว)
- ข้อมูลส่วนตัว — เลขบัตรประชาชน/พาสปอร์ต, วันเกิด, เพศ
- ที่อยู่ — ที่อยู่, เมือง/เขต, จังหวัด, รหัสไปรษณีย์
- ข้อมูลทางการแพทย์ — กรุ๊ปเลือด, ประวัติการแพ้, ยาที่ใช้ปัจจุบัน, ประวัติการตรวจรักษาอื่นๆ
- ติดต่อฉุกเฉิน — ชื่อ-นามสกุล, ความสัมพันธ์, เบอร์ติดต่อ, อีเมล
- การติดต่อ — ภาษาที่ถนัด, ช่องทางที่อนุญาต (SMS/Email/Phone/LINE), LINE ID, Facebook, Instagram
1.6 หน้าต่างรายละเอียดลูกค้า
3 แท็บ: ภาพรวม (ข้อมูลส่วนตัว/ที่อยู่/การแพทย์ · สรุปการใช้บริการ · การ์ด "รวมวงเงิน" · Facebook/LINE ที่เชื่อม · การ์ดแต้มสะสม/สมาชิก) · วงเงิน (รายการวงเงิน/บัตรทั้งหมด ปุ่มปรับวงเงิน สิทธิ์ wallet.adjust.manage และโอนวงเงิน) · ประวัติ (ตารางประวัติเครดิต: วันที่/รายการ/จำนวน/คงเหลือ)
ปุ่มท้ายหน้าต่าง: ประวัติการรักษา · ประวัติการซื้อ · สิทธิ์แพ็คเกจ · ประวัติเครดิต · ลบลูกค้า (สิทธิ์ crm.customer.delete) · แก้ไข · สร้างเคส (ไป EMR)
1.7 ลบลูกค้า
กด "ลบลูกค้า" → หน้าต่างยืนยัน: การลบ = ซ่อนลูกค้าออกจากระบบ (ไม่ปรากฏในรายชื่อ/ค้นหา/ส่งออก/SMS แต่ข้อมูลยังอยู่ กู้คืนได้) เป็นค่าเริ่มต้น — เฉพาะแอดมินเห็นตัวเลือก "ลบถาวร" (ใช้ได้เฉพาะลูกค้าที่ไม่มีประวัติบิล/การรักษา/มัดจำเลย)
1.8 บทบาทที่ใช้
เมนู "ลูกค้า" เห็นทุกบทบาทมาตรฐาน (แอดมิน/staff/sale/manager ฯลฯ) และหมอ — ยกเว้น BT ไม่เห็นเมนูนี้ ปุ่มส่งออก/ส่ง SMS/ลบลูกค้าผูกสิทธิ์ RBAC เฉพาะ
2. จัดการบริการ
เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → จัดการบริการ
หัวหน้าหน้าจอ "จัดการบริการ" พร้อมปุ่ม "เพิ่มบริการ" มุมขวาบน (สิทธิ์ catalog.service.create)
การ์ดสรุป: บริการทั้งหมด · เปิดให้บริการ (เขียว) · ปิดชั่วคราว (เทา) · ราคาเฉลี่ย
ค้นหา + ชิปหมวดหมู่: ช่องค้นหาบริการ + ชิปหมวดหมู่ (จากหน้า "จัดการหมวดหมู่") แต่ละชิปมีตัวเลขจำนวนบริการในหมวดกำกับ
ตารางบริการ: บริการ(ชื่อ+ป้าย"ปิดชั่วคราว") · หมวด · คำอธิบาย · ผลิตภัณฑ์ที่ใช้ (รายการยา/เวชภัณฑ์ที่ผูกไว้+จำนวน) · ราคา(฿) · สถานะ (สวิตช์ สิทธิ์ 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 รายการ), รหัสแพ็กเกจ+อายุการใช้งาน, ปุ่มแก้ไข/เปิด-ปิด/ลบ
มุมมองตาราง: แพ็คเกจ · รหัส · อายุการใช้งาน · ราคา(฿) · สถานะ · การจัดการ — ลบต้องยืนยัน ระบบแจ้งว่าลบไม่ได้ถ้ามีลูกค้าซื้อไปแล้ว
Filler Program 3 ครั้ง
4.2 ฟอร์มสร้าง/แก้ไขแพ็กเกจ
ประเภทแพ็คเกจ — เซสชัน/คอร์ส (นับจำนวนครั้ง/รายการบริการ) หรือ เครดิต (ลูกค้าจ่ายเงินสด ได้เครดิตไว้ใช้)
ข้อมูลทั่วไป: ชื่อแพ็คเกจ(บังคับ), คำอธิบาย, รูปภาพแพ็คเกจ (อัพโหลด — เก็บเข้าคลังสื่อของคลินิกอัตโนมัติ)
ราคา: ราคาขาย/ราคาที่ลูกค้าจ่ายจริง(บังคับ), ราคาเดิม(คำนวณ% ส่วนลด), ระยะใช้สิทธิ์(วัน — เฉพาะประเภทเซสชัน เว้นว่าง=ไม่หมดอายุ), checkbox "เปิดขายอยู่ (active)"
checkbox "แสดงในโปรโมชั่น LINE" — ติ๊กเพื่อให้แพ็คเกจขึ้นในเมนู "โปรโมชัน" ของ LINE ลูกค้า
รายละเอียดเครดิต (เฉพาะประเภทเครดิต): โบนัสเครดิต(แถม)เป็นบาท(บังคับ), อายุเครดิต(เดือน — เว้นว่างใช้ค่าเริ่มต้นระบบ), ตัวเลือกผูกกับ "ชนิดวงเงิน" เฉพาะ (ถ้าเปิดใช้ระบบวงเงินหลายชนิด)
รายการในแพ็กเกจ (เฉพาะประเภทเซสชัน): เพิ่มรายการบริการ/สินค้า กำหนดจำนวน/ไม่จำกัด หรือทำเป็น "เลือกได้" (ลูกค้าเลือก 1 จากตัวเลือกอย่างน้อย 2 รายการ) พร้อมตัวอย่างการปันส่วนราคาต่อรายการแบบเรียลไทม์ และรูปแบบการใช้สิทธิ์ (ปกติ/บุฟเฟต์/โควต้า — โควต้าระบุจำนวนครั้งต่อรอบ วัน/สัปดาห์/เดือน)
4.3 บทบาทที่ใช้
หน้ารายการเปิดให้ทุกบทบาทดู การแก้ไข/เปิด-ปิด/ลบล็อกเมื่อดูมุมมอง "ทุกสาขา" (ต้องเลือกสาขาก่อน) — ไม่มีสิทธิ์ RBAC เฉพาะสำหรับแพ็กเกจ (อิงบทบาทพื้นฐาน)
5. โปรโมชัน
เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → โปรโมชัน
หัวหน้าหน้าจอ "โปรโมชัน & แคมเปญ" + ปุ่ม "สร้างแคมเปญ"
การ์ดสรุป (KPI): กำลังใช้งาน · ตั้งเวลาไว้ · โปรโมชันทั้งหมด · ยอดแลกใช้รวม
รายการโปรโมชัน (การ์ด): แถบไล่สีแสดงมูลค่าส่วนลด (-฿X หรือ -X%) พร้อมป้ายสถานะ (กำลังใช้งาน/รอเริ่ม/หมดอายุ/ปิดใช้งาน) รหัสโปรโมชัน+ป้ายวิธีใช้(อัตโนมัติ/คูปอง), ชื่อ, คำอธิบาย, กลุ่มเป้าหมาย, ช่วงวันที่มีผล, ยอดแลกใช้แล้ว/จำกัดการใช้, ยอดซื้อขั้นต่ำ(ถ้ามี), ปุ่มแก้ไข/ลบ
แถบไล่สี = มูลค่าส่วนลด · ป้ายสถานะ (กำลังใช้/รอเริ่ม/หมดอายุ/ปิด) · วิธีใช้ อัตโนมัติ/คูปอง
5.3 ฟอร์มสร้าง/แก้ไขโปรโมชัน
ข้อมูลทั่วไป: รหัสโปรโมชั่น(เว้นว่าง=สร้างอัตโนมัติ), ชื่อโปรโมชั่น(บังคับ), คำอธิบาย
วิธีการใช้งาน: ใช้อัตโนมัติ (ระบบใช้ให้อัตโนมัติเมื่อเงื่อนไขตรงกัน) หรือ คูปองโค้ด (ลูกค้าต้องกรอกรหัส)
ตั้งค่าส่วนลด: ประเภทส่วนลด(จำนวนเงิน/เปอร์เซ็นต์), มูลค่าส่วนลด(บังคับ), ส่วนลดสูงสุด(เฉพาะแบบเปอร์เซ็นต์), ยอดซื้อขั้นต่ำ
เงื่อนไขผู้มีสิทธิ์ใช้ — เลือก 1 ใน 3: ลูกค้าใหม่ / ระดับสมาชิก (เลือกได้หลายระดับ) / เฉพาะลูกค้าที่ระบุ (เพิ่มเบอร์โทรทีละเบอร์)
ระยะเวลาที่ใช้ได้: วันที่เริ่มต้น(บังคับ), วันที่สิ้นสุด, จำนวนการใช้ทั้งหมด, ใช้ได้ต่อลูกค้า (เว้นว่าง=ไม่จำกัด)
สถานะ: checkbox "เปิดใช้งาน (โปรโมชั่นจะถูกใช้อัตโนมัติเมื่อเงื่อนไขตรงกัน)" — ลบต้องยืนยันในหน้าต่างแยก
5.4 บทบาทที่ใช้
เมนูเปิดให้ทุกบทบาทมาตรฐานใช้งานได้ ไม่มีสิทธิ์ RBAC แยกเฉพาะ
6. ระบบสะสมแต้ม
เข้าจากเมนู: กลุ่ม สินค้า/บริการ/การตลาด → ระบบสะสมแต้ม
หัวหน้าหน้าจอ "ระบบสะสมแต้ม (Loyalty)" — โมดูลนี้เปิด/ปิดได้ทั้งระบบ (ปิดอยู่ทุกแท็บจะแจ้งว่าโมดูลยังไม่เปิดใช้งาน)
5 แท็บ: จัดการแต้ม · ของรางวัล · การแลกของรางวัล · ประวัติแต้ม · ตั้งค่าแต้ม (แท็บสุดท้ายเฉพาะแอดมิน)
6.1 จัดการแต้ม
เลือกลูกค้าจากช่องค้นหา → แสดงการ์ด แต้มคงเหลือ และ แต้มสะสมรวม (Lifetime) — เฉพาะแอดมินเห็นกล่อง "ปรับแต้มด้วยตนเอง (Admin)" — กรอกจำนวนแต้ม+เหตุผล(บังคับทั้งคู่) กด เพิ่ม/ลด — บันทึกเป็นรายการใหม่ในประวัติแต้ม
6.2 ของรางวัล
รายการของรางวัลแบบการ์ด (ประเภท, ชื่อ, คำอธิบาย, แต้มที่ใช้แลก, จำนวนที่แลกไปแล้ว, สต็อกคงเหลือ) ปุ่ม "เพิ่มของรางวัล" (เฉพาะแอดมิน): ชื่อ, รายละเอียด, แต้มที่ใช้แลก, ประเภท, สต็อก(เว้นว่าง=ไม่จำกัด), ลำดับการแสดง, เปิดใช้งาน
ครีมกันแดด SPF50
การ์ด: ประเภท/ชื่อ/แต้มที่ใช้แลก/สต็อกคงเหลือ · "เพิ่มของรางวัล" เฉพาะแอดมิน (สต็อกเว้นว่าง=ไม่จำกัด)
6.3 การแลกของรางวัล
เลือกลูกค้า → แสดงแต้มคงเหลือ → เลือกของรางวัลที่เปิดใช้งาน กด "แลกเลย" (แต้มไม่พอ/ของหมด=กดไม่ได้ — เฉพาะแอดมิน) แลกสำเร็จแสดงโค้ดสำหรับรับของที่เคาน์เตอร์
ด้านล่างมี "ประวัติการแลกของลูกค้ารายนี้" (รอรับของ/รับแล้ว/ยกเลิก/หมดอายุ) — รายการ "รอรับของ" แอดมินกดปุ่ม "ทำเครื่องหมายว่ารับแล้ว" ได้
6.4 ประวัติแต้ม
เลือกลูกค้า → ตารางประวัติแต้มแบบสะสม (append-only เรียงล่าสุดก่อน): วันที่ · ประเภท · รายละเอียด · แต้ม(+/− พร้อมสี) · คงเหลือ
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 + วันหมดอายุ:
- กด "รับสินค้าเข้า" → กรอกวันที่รับ, ชื่อ Supplier, อ้างอิง PO(ถ้ามี), หมายเหตุ
- เพิ่มรายการในตารางกริดแบบ bulk — เลือกสินค้า, ระบุ Lot number(บังคับ), จำนวน, ต้นทุน/หน่วย(เว้นว่างได้="รอบัญชีเติมต้นทุน" ทีหลัง), วันหมดอายุ, ติ๊ก GPO/เย็น(cold chain) ถ้ามี, ตำแหน่งจัดเก็บ
- ระบบเตือนถ้าสินค้า+Lot ซ้ำกันในใบเดียว ต้องรวมเป็นแถวเดียว
- บันทึกใบรับ → เอกสารเข้าสถานะ "ร่าง"
- กด "Post" ที่แถวใบรับ (modal ยืนยัน "สร้าง Lot และบันทึก movement เข้าระบบ — ไม่สามารถย้อนกลับได้") → สต็อกเข้าจริง หรือถ้าเปิดโหมดตรวจทานไว้ ใบจะเป็น "รอตรวจสอบ" ก่อน แล้วผู้มีสิทธิ์กด "อนุมัติ"/"ตีกลับ"
เติมต้นทุนทีหลัง: ใบที่มีบรรทัด costPending ขึ้นสถานะ "รอบัญชีเติมต้นทุน" (badge เหลือง) — กดปุ่ม "เติมต้นทุน" ที่แถว กรอกต้นทุน/หน่วยของแต่ละแถวที่ค้าง → ระบบบันทึก movement ปรับมูลค่าแบบ append-only และคำนวณต้นทุนถัวเฉลี่ยใหม่อัตโนมัติ
GR-2569-0142
บจก. เมดิคอล · 8 รายการ
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 วัน)
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 รายการ"ถ้ามีหลายบรรทัด), จำนวน(+/−), เหตุผล, สถานะ, วันที่
- กด "สร้างการปรับปรุง" → เลือกเหตุผลหลัก (เสียหาย/หาย/นับผิด/หมดอายุ-ทำลาย/ปรับปรุงตัวเลข/อื่นๆ) และหมายเหตุ
- เพิ่มแถวในกริด — เลือกสินค้า+Lot แล้วกรอก "ยอดใหม่" (คงเหลือหลังปรับ แบบเลขสัมบูรณ์ ไม่ใช่ผลต่าง) ระบบคำนวณส่วนต่างเทียบคงเหลือปัจจุบันเอง
- กด "ส่งขออนุมัติ" → เข้าสถานะ "รออนุมัติ"
- ผู้มีสิทธิ์กด "อนุมัติ" → "อนุมัติแล้ว" แล้วกด "ดำเนินการ" อีกครั้งเพื่อให้สต็อกเปลี่ยนจริง (มีการ์ดกันกรณีสต็อกเปลี่ยนไปแล้วระหว่างรออนุมัติ — แจ้ง error แทนปรับผิด)
นำเข้าจากไฟล์: สร้างได้เฉพาะสถานะ "รออนุมัติ" — สต็อกยังไม่ขยับจนกว่าจะอนุมัติ+ดำเนินการ
สิทธิ์: อนุมัติ/ดำเนินการต้อง inventory.adjustment.approve(admin) · นำเข้าไฟล์ต้อง inventory.import.upload
7. นับสต็อก
เข้าจากไหน: เมนู คลังสินค้า → นับสต็อก
ตัวกรองสถานะ(ทั้งหมด/ร่าง/รอตรวจสอบ/อนุมัติแล้ว) · ตาราง: เลขที่, ขอบเขต(นับทั้งหมด/ตามหมวด/ตามที่เก็บ), สถานะ, รายการ, ส่วนต่าง(ไฮไลต์เหลืองถ้า >0), วันที่
- กด "สร้างรอบนับสต็อก" → ระบุที่เก็บ/โซน(ถ้ามี) + หมายเหตุ
- กรอกรายการที่นับในกริด — เลือกสินค้า (เลือก lot ได้ ไม่บังคับ) แล้วกรอก "ยอดนับจริง" (คอลัมน์ "ยอดระบบ" เป็นค่า snapshot อัตโนมัติ กรอกเองไม่ได้)
- กด "สร้างรอบนับ" → เข้าสถานะ "ร่าง"
- กด "ส่งตรวจ" ที่แถว → เข้าสถานะ "รอตรวจสอบ" (คำนวณส่วนต่างตอนนี้)
- ผู้มีสิทธิ์กด "อนุมัติ" → สต็อกถูกปรับตามส่วนต่างจริง
นำเข้าจากไฟล์: สร้างเป็นใบร่างเท่านั้น ส่วนต่างคำนวณตอนส่งตรวจ ปรับสต็อกจริงหลังอนุมัติ
ปริ้นใบนับ (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, จำนวน, ต้นทาง→ปลายทาง, สถานะ, วันที่
- กด "สร้างใบโอน" → ระบุสาขาปลายทาง + หมายเหตุ
- กด "เลือกสินค้าหลายรายการ" → เลือกสินค้า/lot/จำนวน (กันเลือก lot ซ้ำ และจำกัดไม่เกินคงเหลือของ lot นั้น)
- กด "สร้างใบโอน" → เข้าสถานะ "รอจัดส่ง"
- กด "จัดส่ง" ที่แถว → สต็อกตัดออกจากต้นทาง เข้าสถานะ "จัดส่งแล้ว"
- ปลายทางกด "รับของ" → เข้าสถานะ "รับแล้ว" สต็อกเข้าสาขาปลายทาง
9. โอนออกภายนอก
เข้าจากไหน: เมนู คลังสินค้า → โอนออกภายนอก — ใช้โอนไป instance อื่น (เช่น แบรนด์/คลินิกอื่นที่แยกระบบ)
มี binding = "ส่งออนไลน์" (กันพิมพ์ผิด) · ไม่มี = Export ไฟล์ให้ปลายทางอัปโหลดที่ §10 · จัดส่งแล้วตัดสต็อกจริง
แบนเนอร์สถานะการเชื่อมต่อคลินิก · ตัวกรองสถานะ(ทั้งหมด/ฉบับร่าง/จัดส่งแล้ว/ยกเลิก) · ตาราง: เลขที่โอน, ปลายทาง, รายการ, ต้นทุนรวม(ถ้ามีสิทธิ์), สถานะ
- ถ้า instance นี้ "เชื่อมคลินิก" (binding) กับปลายทางอยู่แล้ว มีตัวเลือก 2 โหมด: "ส่งออนไลน์ถึง [ชื่อคลินิกคู่]" (ปลายทางกำหนดอัตโนมัติ) หรือ "Export ไฟล์ (วิธีเดิม)" (ระบุชื่อ instance ปลายทางเอง)
- เลือกสินค้า/lot ผ่าน "เลือกสินค้าหลายรายการ" เหมือนโอนย้ายสาขา
- กด "สร้างใบโอนออก" → เข้าสถานะ "ฉบับร่าง"
- กด "จัดส่ง" (มี confirm dialog) → ตัดสต็อกจริง เข้าสถานะ "จัดส่งแล้ว" — โหมด "ส่งออนไลน์" จัดส่งแล้วไปโผล่ในเมนู "ข้ามคลินิก" (หัวข้อ 11) แทน
- โหมดไฟล์: "จัดส่งแล้ว" มีปุ่ม "ไฟล์โอน" (ดาวน์โหลด) และ "PDF" (พิมพ์ใบโอน) ให้ส่งให้ปลายทางเอง
นำเข้าจากไฟล์: สร้างใบร่างเท่านั้น สต็อกยังไม่ตัดจนกว่าจะกด "จัดส่ง"
สิทธิ์: จัดการ(สร้าง/จัดส่ง/ยกเลิก) ต้อง inventory.transfer.manage · เห็นต้นทุนรวม inventory.cost.view
10. รับโอนเข้า (นำเข้าไฟล์)
เข้าจากไหน: เมนู คลังสินค้า → รับโอนเข้า (นำเข้าไฟล์) — ฝั่งรับของใบโอนออกภายนอกโหมดไฟล์จาก instance อื่น
ตัวกรองสถานะ(ทั้งหมด/รอตรวจสอบ/รับเข้าคลังแล้ว/ปฏิเสธ) · ตาราง: เลขที่โอน, ต้นทาง, รายการ, ต้นทุนรวม(ถ้ามีสิทธิ์), จับคู่สินค้า(✓ หรือ "ไม่จับคู่"), สถานะ
- กด "อัปโหลดไฟล์ใบโอน" → เลือกไฟล์ JSON ที่ได้จากปลายทางที่ส่งมา
- ระบบจับคู่ SKU กับสินค้าในคลังนี้อัตโนมัติ ถ้าจับคู่ได้ครบ (allMatched) รับเข้าคลังทันที ถ้าไม่ครบค้าง "รอตรวจสอบ"
- กด "รายละเอียด" ที่แถวเพื่อดูรายการ/แก้ SKU ที่ไม่จับคู่ — ปุ่ม "รับเข้าคลัง" กดได้เมื่อจับคู่ครบทุกแถว
- ไม่ต้องการรับ กด "ปฏิเสธ" (ใส่เหตุผลได้)
สิทธิ์: อัปโหลดไฟล์ต้อง 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(ฟ้า) / คืนบางส่วน(ม่วง) / ได้ของคืนครบ(เขียว) / ตัดจำหน่าย(แดง) / ยกเลิก(เทา)
เคลมค้าง = ยังเป็นทรัพย์สิน · "Issue จากเคส" = ปัญหาจาก EMR ที่ยังไม่เปิดใบเคลม · ตัดจำหน่าย = admin
- สร้างใบเคลมแบบเลือกเอง: กด "สร้างใบเคลม" → กรอก Supplier/หมายเหตุ → "เลือกสินค้าหลายรายการ" (เลือกตรง lot ไม่ใช่ FEFO อัตโนมัติ) → กรอกเหตุผลทุกแถวที่เลือก
- สร้างจาก Issue เคส: แท็บ "Issue จากเคส" → กด "สร้างใบเคลม" ที่แถว issue → ระบบดึงรายการที่ถูกตัดสต็อกในเคสนั้นมาให้อัตโนมัติ
- เปิดรายละเอียดใบเคลม → กด "ส่ง Supplier" (ใส่เลข RMA ได้) → เข้าสถานะ "ส่ง Supplier"
- ได้ของคืน กรอกจำนวนที่รับคืนต่อแถว → กด "บันทึกรับของคืน"
- ไม่ได้คืนครบและต้องการปิดยอด: กด "ตัดจำหน่าย / Refund" (ติ๊กได้ว่า Supplier คืนเป็นเงินแทนของ) → มูลค่าออกจาก "เคลมค้าง" ด้วยใบปรับปรุงสต็อก
- ยกเลิกใบเคลม (เฉพาะสถานะ "เปิดเคลม") → คืนสต็อกทั้งหมดกลับเข้าคลัง
สิทธิ์: จัดการ(สร้าง/ส่ง/รับคืน/ยกเลิก) inventory.claim.manage · ตัดจำหน่าย inventory.claim.writeoff(admin) · เห็นต้นทุน/มูลค่า inventory.cost.view
13. ประวัติเคลื่อนไหว (Ledger)
เข้าจากไหน: เมนู คลังสินค้า → ประวัติเคลื่อนไหว
คอลัมน์ "ผู้ทำ" บอกชื่อพนักงานที่ทำรายการนั้น (รับของเข้า ปรับปรุง ตัดจ่าย) — รายการที่ระบบทำให้เองแสดงว่า "ระบบ" ส่วนรายการจากการตรวจนับหรือการนำเข้าข้อมูลแสดงว่า "ตรวจนับสต็อก" / "นำเข้าข้อมูล" · ไฟล์ Excel ที่กดออกจากหน้านี้มีคอลัมน์ผู้ทำด้วย ใช้ไล่กับบัญชีได้
ตัวกรองช่วงวันที่(ค่าเริ่มต้น 30 วันล่าสุด) + ค้นหาสินค้า/lot + ชิปกรองประเภท: ทั้งหมด / ผิดปกติ(รวม เคลม+ปรับปรุง+เสีย) / รับเข้า / จ่ายออก / ปรับปรุง / ส่งเคลม / รับคืนเคลม / โอนออก / โอนเข้า / คืน / เสีย-ทำลาย
แถวประเภท "ปรับปรุง" และ "เคลม" มีพื้นหลังสีแดงอ่อนทั้งแถว + ป้ายกำกับ ให้สแกนหารายการผิดปกติได้เร็ว
จำนวน +/− (เขียว/เทา) · แถว "ปรับปรุง"/"เคลม" พื้นแดงอ่อน · คอลัมน์ต้นทุน/Δมูลค่า เห็นเฉพาะผู้มีสิทธิ์ inventory.cost.view
คอลัมน์: วันเวลา, สินค้า/Lot, ประเภท, จำนวน(+/−), ต้นทุน/หน่วย + Δ มูลค่า(เฉพาะผู้มีสิทธิ์เห็นต้นทุน — Δ มูลค่าคือรายการปรับมูลค่าแบบไม่กระทบจำนวน เช่น เติมต้นทุนย้อนหลัง), เหตุผล/Ref(อ้างอิงเอกสารต้นทาง), ผู้ทำ
สิทธิ์: คอลัมน์ต้นทุน/Δ มูลค่า ต้อง inventory.cost.view
14. รอปรับสต็อก
เข้าจากไหน: เมนู คลังสินค้า → รอปรับสต็อก
คืออะไร: คิวสินค้าที่ตอนนี้ยอดในระบบติดลบเพราะถูกขาย/จ่ายออกไปก่อนที่ของจะรับเข้าจริง (ขายก่อนรับเข้า/oversell) — เป็นตัวถ่วงดุลของนโยบายนี้ ถ้าไม่มีหน้านี้ยอดติดลบจะสะสมไปเรื่อยจนไปเจอตอนนับสต็อก
การ์ด KPI: สินค้าที่ค้างอยู่, จำนวนที่ติดลบรวม, มูลค่าโดยประมาณ, ค้างเกิน N วัน (ค่า stale threshold กำหนดจากระบบ) · ตารางเรียงจากค้างนานสุดก่อน — แต่ละแถวกดขยายดูรายการเคลื่อนไหวที่ทำให้ติดลบ พร้อมลิงก์ "เปิดดูเคส" ถ้าที่มาคือ visit/เคสรักษา
ยอดติดลบจากขายก่อนรับเข้า (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 (แนวโน้มสินค้าที่เสีย/ทำลายรายช่วงเวลา)
admin-only (inventory.report.view) · มูลค่าสต็อก/ต้นทุนเห็นเฉพาะผู้มีสิทธิ์ · Export ได้ทุกแท็บยกเว้น "ตัดสต็อก"
Export: ปุ่ม Excel/PDF มุมขวาบน — ใช้ได้ทุกแท็บยกเว้น "ตัดสต็อก" ที่ export จากแท็บของมันเอง
17. จัดซื้อ — ภาพรวมโมดูล
17.1 แดชบอร์ดจัดซื้อ
เข้าจากไหน: เมนู จัดซื้อ → แดชบอร์ดจัดซื้อ
การ์ด KPI: ร่าง, รออนุมัติ, รอรับสินค้า, มูลค่า PO เดือนนี้ · ตาราง "ใบสั่งซื้อล่าสุด" (10 รายการ) พร้อมปุ่ม "รายการ PO ทั้งหมด"
17.2 ผู้จัดจำหน่าย
เข้าจากไหน: เมนู จัดซื้อ → ผู้จัดจำหน่าย
ค้นหาชื่อ/เลขภาษี/ผู้ติดต่อ + กรองสถานะใช้งาน · ตาราง: ชื่อผู้จัดจำหน่าย, เลขประจำตัวผู้เสียภาษี, โทรศัพท์, เครดิตเทอม(วัน), Lead Time(วัน), WHT(%), สถานะ
ขั้นตอน: กด "เพิ่มผู้จัดจำหน่าย" หรือไอคอนดินสอที่แถวเพื่อแก้ไข → กรอกฟอร์ม (ชื่อบังคับ ที่เหลือไม่บังคับ) → บันทึก · "นำเข้าจากไฟล์" ทำ bulk upload ได้ (upsert ด้วยชื่อผู้ขาย)
คอลัมน์: เครดิตเทอม/Lead Time/WHT% ใช้ตอนสร้าง PO+3-way match · "นำเข้าจากไฟล์" upsert ด้วยชื่อผู้ขาย
17.3 ใบสั่งซื้อ (PO)
เข้าจากไหน: เมนู จัดซื้อ → ใบสั่งซื้อ (PO)
ตัวกรอง: ค้นหาเลขที่/ผู้จัดจำหน่าย, สถานะ, ผู้จัดจำหน่าย, ช่วงวันที่ · ตาราง: เลขที่ PO, ผู้จัดจำหน่าย, สถานะ, วันที่รับของ, รวม(รวม VAT), วันที่สร้าง
ขั้นตอนสร้าง PO:
- กด "สร้าง PO ใหม่" → เลือกผู้จัดจำหน่าย + วันที่คาดว่าจะรับสินค้า
- เพิ่มรายการสินค้า (ทีละแถว หรือ "เลือกสินค้าหลายรายการ") → กรอกจำนวน, ราคา/หน่วย, ส่วนลด, VAT% ต่อแถว — คำนวณก่อน VAT/VAT/รวมทั้งสิ้นแบบเรียลไทม์
- บันทึก → PO เข้าสถานะ ร่าง
ขั้นตอนหลังสร้าง (หน้ารายละเอียด PO): ร่าง → "ส่งขออนุมัติ" → รออนุมัติ → ผู้มีสิทธิ์กด "อนุมัติ" (→ อนุมัติแล้ว) หรือ "ปฏิเสธ" (→ กลับเป็นร่าง) → "ส่งให้ผู้จัดจำหน่าย" → ส่งแล้ว — ทุกสถานะที่ยังไม่รับของกด "ยกเลิก PO" ได้ (ยกเลิกไม่ได้ถ้ามีการรับของแล้ว) — ส่งแล้ว/รับบางส่วน กด "ปิด PO" เพื่อปิดโดยไม่รอรับครบ (close short) — พิมพ์ 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 ที่ costPending | admin |
inventory.product.create / .edit | เพิ่ม/แก้ไขสินค้า, จัดการหมวดหมู่ | admin หรือ sale |
inventory.lot.create | สร้าง lot ใหม่, แก้ไข lot | admin หรือ 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) จะมีปุ่มเพิ่ม "รายงานเครือข่าย" ต่อท้ายแท็บ — ไปหน้าคนละหน้า ไม่ใช่แท็บภายใน
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 ทั้งตาราง
ค่ามือ (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)
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 / ผู้ดูแลระบบ |
| รับเข้าคลัง | ตรวจสอบและอนุมัติใบรับสินค้าเข้าคลัง | หัวหน้าคลัง / ผู้ดูแลระบบ |
| แก้บิลหลังปิด | อนุมัติการแก้ไขราคา/บิลหลังปิดการขาย | ผู้ดูแลระบบ |
คุณสมชาย → คุณ B (เซลล์)
เคส #2569-0142 · ขอโดยแคชเชียร์ A · 3 นาทีที่แล้ว
แต่ละแท็บมี badge จำนวนค้าง · การ์ดโชว์ค่าก่อน (ขีดฆ่า) → หลัง · แท็บที่ไม่มีสิทธิ์เห็นไอคอนกุญแจ
ผู้อนุมัติจริงที่แสดงในแต่ละแท็บอ่านจากการตั้งค่านโยบายอนุมัติของคลินิก — ถ้าบัญชีของผู้ใช้ไม่อยู่ในรายชื่อผู้อนุมัติของแท็บนั้น แต่ยังเปิดหน้านี้เข้ามาได้ จะเห็นแท็บนั้นเป็นสถานะล็อก(ไอคอนกุญแจ) พร้อมข้อความอธิบายว่าต้องมีสิทธิ์อะไร
3.2 การอนุมัติแต่ละรายการ
แต่ละรายการแสดง: รายละเอียดงาน (เคส/บิล/PO ที่เกี่ยวข้อง), ผู้ขอ+เวลาที่ขอ, เหตุผล(ถ้ามี) — แต่ละแถวมีปุ่ม ปฏิเสธ และ อนุมัติ
- แท็บ เปลี่ยนเซลล์: คำขอมาจากตะกร้า POS ก่อนเปิดเคส → "ยังไม่เปิดเคส — อนุมัติล่วงหน้าได้ ระบบจะผูกให้เมื่อเปิดเคส"
- แท็บ รับเข้าคลัง: แสดงเลขที่ใบรับสินค้า, เลข PO อ้างอิง(ถ้ามี), ผู้จัดจำหน่าย, จำนวนรายการ, ยอดรวม
- แท็บ แก้บิลหลังปิด: แสดงประเภทการแก้ไข (แก้ราคารายการ/แก้ยอดสุทธิทั้งบิล/เพิ่มรายการย้อนหลัง), เคสที่เกี่ยวข้อง, ค่าก่อน→หลังแก้ไข
หากผู้ใช้ไม่มีสิทธิ์อนุมัติงานใดเลย หน้าจะแสดง "คุณยังไม่มีสิทธิ์อนุมัติรายการใด ๆ"
3.3 บทบาทที่ใช้
เข้าเมนูได้ต้องเป็นแอดมิน/ผู้ดูแลระบบ หรือผู้จัดการ (managerAllowed) — แต่การอนุมัติจริงแต่ละแท็บขึ้นกับนโยบายอนุมัติที่ตั้งไว้ แท็บ "เปลี่ยนเซลล์" และ "แก้บิลหลังปิด" ฝั่งเซิร์ฟเวอร์บังคับให้เป็นผู้ดูแลระบบเท่านั้นโดยปริยาย
4. บัญชี
เข้าจากเมนู: กลุ่ม หลังบ้าน → บัญชี (เมนูย่อยกางออกเป็น 7 หัวข้อ)
ทุกหน้าย่อยกรองข้อมูลตามสาขาที่กำลังดูอยู่โดยอัตโนมัติ และต้องมีสิทธิ์ระดับแอดมิน/ผู้ดูแลระบบ (บางหน้าต้องมีสิทธิ์เฉพาะเพิ่มเติม)
4.1 ใบกำกับภาษี
การ์ด KPI 4 ใบ: จำนวนเอกสาร / ฐานภาษีรวม / ภาษีขายรวม (VAT) / ยอดรวมทั้งสิ้น
กรองตามงวดภาษี (เดือน+ปี พ.ศ.) · ลูกค้าไม่มีชื่อ = "ลูกค้าทั่วไป (walk-in)" · Export Excel เก็บยื่นสรรพากร
ตัวกรอง: เลือกงวดภาษีเป็นเดือน+ปี(พ.ศ.) — กรองตามเดือนที่ออกเอกสารภาษี ไม่ใช่ช่วงวันที่อิสระ
ตาราง: เลขที่เอกสาร / วันที่ / ลูกค้า(ไม่มีชื่อขึ้น "ลูกค้าทั่วไป (walk-in)") / ฐานภาษี / VAT / รวม / ประเภท(เต็มรูป/อย่างย่อ) / ปุ่ม "รายละเอียด" ปุ่ม Export Excel — สิทธิ์: accounting.taxinvoice.view
4.2 ตั้งค่า VAT
ฟอร์มตั้งค่า: สวิตช์ "จดทะเบียนภาษีมูลค่าเพิ่ม" · อัตรา VAT(%) (ค่าเริ่มต้นตามกฎหมายปัจจุบัน 7%) · วันที่มีผล · เลขประจำตัวผู้เสียภาษี(13 หลัก) · ชื่อนิติบุคคล/ชื่อตามทะเบียน · ที่อยู่ตามทะเบียนภาษี
แก้ไขมีผลทางกฎหมาย ตรวจกับนักบัญชีก่อน · ออกใบกำกับย้อนหลัง (backfill) ต้องผ่านทีมเทคนิค · sig accounting.vat.config
ปุ่ม "บันทึกการตั้งค่า" ด้านล่างมีตาราง "ประวัติการแก้ไข" (วันที่มีผล/สถานะ VAT/อัตรา/แก้ไขเมื่อ-โดยใคร) — การออกใบกำกับภาษีย้อนหลัง (backfill) ต้องทำผ่านทีมเทคนิค ไม่สามารถสั่งจากหน้านี้ได้ — สิทธิ์: accounting.vat.config
4.3 ตั้งค่าการบัญชี
- ออกใบกำกับ/ลง GL อัตโนมัติเมื่อขาย — สวิตช์เปิด/ปิด
- เกณฑ์อายุลูกหนี้ — "ตามวันที่ทำรายการ (txn_date)" หรือ "ตามวันครบกำหนดชำระ (due_date)" (ตัวเลือกหลังยังไม่รองรับจริง — "เร็วๆ นี้")
- วิธีคิดต้นทุน — "ต้นทุนเจาะจง (Specific/FEFO)" / "ต้นทุนถัวเฉลี่ยถ่วงน้ำหนัก" (เป็นค่าอ้างอิงแสดงผลเท่านั้น ไม่เปลี่ยนพฤติกรรมคิดต้นทุนจริง)
- วิธีจัดการ VAT เมื่อแปลงแพ็คเกจเป็นเครดิต — "ออกใบลดหนี้ (Credit Note)" หรือ "โอนภายใน (Internal Transfer)"
- ล็อกงวดบัญชี — เลือกเดือน/ปี แล้วกด "ล็อกงวดนี้" (คำเตือน "อย่าล็อกงวดที่ยังมีรายการขายค้างลงบัญชี") ตารางแสดงงวดที่ล็อกอยู่ พร้อมปุ่ม "ปลดล็อก" ต่อแถว
สิทธิ์: accounting.vat.config
4.4 ภ.พ.30
หัวข้อ "ภ.พ.30 — แบบแสดงรายการภาษีมูลค่าเพิ่ม" ตัวกรองเดือน+ปี(พ.ศ.) มุมขวาบน + ปุ่ม CSV
การ์ด KPI 4 ใบ: ยอดขาย(ไม่รวม VAT) / ภาษีขาย(Output VAT) / จำนวนใบกำกับภาษี / ยอดรวม(รวม VAT)
"ภาษีขาย (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, ยังไม่รับสินค้า) / ยอดสุทธิ / วันที่สร้าง / ปุ่มดูรายละเอียด
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 ฝั่งเจ้าหนี้/ซื้อ (คนละหน้ากับ 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 | หลังบ้าน → บัญชี → ตั้งค่า VAT | accounting.vat.config |
| ตั้งค่าการบัญชี | หลังบ้าน → บัญชี → ตั้งค่าการบัญชี | accounting.vat.config |
| ภ.พ.30 | หลังบ้าน → บัญชี → ภ.พ.30 | accounting.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/ผู้ดูแลระบบ มุมมองข้อมูลของทั้งทีม+อนุมัติ+ตั้งค่า)
ส่วนที่ 1 — "ของฉัน" (พนักงานทุกคนใช้ได้)
1.1 แดชบอร์ดของฉัน
หน้าแรกของโมดูล HR แสดง: การ์ด "เข้างานวันนี้" (KPI เดียวที่พนักงานทั่วไปเห็น) · การ์ด "เข้าถึงด่วน" (ปุ่มลัด: ข้อมูลส่วนตัว, ตารางงานของฉัน, ลงเวลา/เวลาของฉัน, ลาของฉัน, สลิปเงินเดือนของฉัน, ใบอนุญาตของฉัน) · ปฏิทินการลา (จุดวันที่มีการลาอนุมัติแล้ว)
"เข้างานวันนี้" = 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 มีให้เช่นกัน
ออกก่อนครบ 8 ชม. = กล่องเตือน · แถว "ไม่ได้ลงชื่อออก" (แดง) มีปุ่ม "ส่งคำขอแก้เวลา" (แก้เวลาไม่สร้าง OT)
1.6 ลาของฉัน
การ์ดโควตาการลา (ทุกประเภทที่มี พร้อมจำนวนวันคงเหลือ/ทั้งหมด แถบสีบอกสัดส่วน) — กด "ขอลาหยุด" มุมขวาบน → เลือกประเภทการลา, วันที่เริ่ม-สิ้นสุด, เหตุผล/หมายเหตุ(บังคับ) → ส่งคำขอ — ตัวกรองช่วงวันที่ + ตารางประวัติการลา (สลับตาราง/ปฏิทิน) ป้ายสถานะ: รออนุมัติ/อนุมัติแล้ว/ปฏิเสธ
โควตาไม่พอ = ปฏิเสธก่อนบันทึก (ยกเว้น "ลาไม่รับค่าจ้าง") · นับวันเต็มเสมอ · ไม่มีปุ่มยกเลิกใบลาบนหน้าจอ
1.7 ขอ OT
ตารางประวัติคำขอ OT เดือนปัจจุบัน: วันที่, เวลา, อัตรา, จำนวนเงิน(คำนวณอัตโนมัติหลังอนุมัติเท่านั้น — ก่อนอนุมัติ "—"), เหตุผล, สถานะ — กด "ขอ OT" → กรอกวันที่, เวลาเริ่ม-สิ้นสุด, อัตราค่าล่วงเวลา (1.5 เท่าวันทำงานปกติ / 2 เท่าวันหยุด / 3 เท่าวันหยุดนักขัตฤกษ์), เหตุผล(บังคับ อย่างน้อย 3 ตัวอักษร) → ส่งรอฝ่ายบุคคล/ผู้ดูแลอนุมัติ
สูตร: ฐานเงินเดือน÷30÷8×ชั่วโมง×ตัวคูณ · เฉพาะ OT ที่อนุมัติแล้วเข้าเงินเดือนงวดถัดไป
1.8 สลิปเงินเดือนของฉัน
หน้าดูอย่างเดียวของสลิปที่จ่ายแล้วเท่านั้น (ฉบับร่างไม่แสดง) — การ์ดสรุป: เงินได้สะสม, รายการหักสะสม, เงินสุทธิสะสม, จำนวนสลิป — ตารางรายงวด: งวด, เงินได้รวม, รายการหัก(ประกันสังคม+เงินกู้+WHT รวมกัน), เงินสุทธิ, สถานะ "จ่ายแล้ว"
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)
"เพิ่มพนักงาน" กรอก 4 ส่วน (บัญชี/ส่วนตัว/การเงิน/ตารางงาน) · badge "Mirror" = read-only (แก้ที่คลินิกหลัก)
กด "เพิ่มพนักงาน" กรอก: ข้อมูลบัญชีผู้ใช้(username/password/email/เบอร์โทร), ชื่อ-นามสกุล, บทบาท, รหัสพนักงาน, แผนก, ตำแหน่ง, วันเริ่มงาน, เลขบัตรประชาชน, วันเกิด, เพศ, เงินเดือนพื้นฐาน, ประกันสังคม(เปิด/ปิด+อัตรา+เพดาน), เงินกู้(ยอดคงเหลือ+หักรายเดือน), บัญชีธนาคาร, สาขาที่สังกัด, ตารางงานเริ่มต้น และถ้าเลือกบทบาท "doctor" มีช่องตั้งค่าค่าตอบแทนแพทย์(ประเภท+อัตรา)
2.3 จัดตารางกะ
ตารางกริด "พนักงาน × วันในสัปดาห์" สำหรับแอดมิน/HR กำหนดกะเอง (คนละหน้ากับ "ตารางงานของฉัน" ที่พนักงานส่งคำขอเอง):
คลิกช่องว่างเลือกกะด่วน (เช้า/บ่าย/ดึก/หยุด) · เกิน 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 ทุกคน กรองด้วยชิปสถานะ (รออนุมัติ/อนุมัติแล้ว/ปฏิเสธ/ทั้งหมด — เริ่มต้น "รออนุมัติ") คอลัมน์: พนักงาน, วันที่, เวลา, อัตรา, จำนวนเงิน, เหตุผล, สถานะ/การจัดการ — "อนุมัติ" ทันที หรือ "ปฏิเสธ" กรอกเหตุผล(บังคับ)
น้องมิ้นท์ · 18:00–21:00
1.5× · ฿1,050
จำนวนเงินคำนวณตอนยื่น (ไม่ใช่ตอนอนุมัติ) · "ปฏิเสธ" ต้องกรอกเหตุผล · ผู้อนุมัติอนุมัติคำขอของตัวเองไม่ได้
2.7 อนุมัติแก้เวลา
ตารางคำขอแก้เวลาที่พนักงานส่งมา (กรณีลืม clock-out) กรองด้วยชิปสถานะเช่นเดียวกับ OT คอลัมน์: พนักงาน, วันที่บันทึก, เวลาเข้างาน(ขอแก้), เวลาออกงาน(ขอแก้), เหตุผล, ยื่นเมื่อ, สถานะ/การจัดการ — อนุมัติทันทีหรือปฏิเสธพร้อมเหตุผล(บังคับ)
2.8 บันทึกเวลาทีม
ไฟล์เดียวกับ "ลงเวลา/เวลาของฉัน" แต่เปิดมุมมองทีม (ไม่มีแผงลงเวลาส่วนตัว — ดูของคนอื่นเท่านั้น): การ์ด KPI รายวัน (มาทำงาน, มาสาย, ลางาน, ปฏิบัติงานนอกสถานที่) — ตาราง/ปฏิทินของทุกคน ค้นหาชื่อ/ตำแหน่ง ส่งออก Excel/PDF — ป้ายสถานะต่อแถว: ตรงเวลา, สาย, นอกสถานที่, ลา และป้ายเสริม "ไม่ได้ลงชื่อออก"
2.9 อนุมัติการลา
ไฟล์เดียวกับ "ลาของฉัน" แต่เปิดมุมมองทีม เพิ่ม 3 แท็บ: คำขอลา (ตารางคำขอลาทุกคน กรองสถานะ+ช่วงวันที่ อนุมัติ/ปฏิเสธด่วนต่อแถว — ผู้อนุมัติอนุมัติคำขอลาของตัวเองไม่ได้) · โควต้า (ตารางโควต้าการลาของพนักงานทุกคน × ทุกประเภทการลา) · ตั้งค่า (จัดการประเภทการลาที่มีในระบบ — "เพิ่มประเภท" กรอกชื่อ, รหัส(slug), จำนวนวันต่อปี, คำอธิบาย)
ปุ่ม "ขอลาหยุด" ในมุมมองนี้มีช่องเพิ่ม "ขอลาในนามของ" ให้ HR ยื่นคำขอลาแทนพนักงานคนอื่นได้
น้องมิ้นท์ · ลาป่วย 2 วัน
28–29 ก.ค. · เหลือโควตา 28 วัน
อนุมัติแล้วตัดโควตาทันที · ผู้อนุมัติอนุมัติคำขอลาของตัวเองไม่ได้ · แท็บ "โควต้า" แก้รายคน (รองรับลาครึ่งวันด้วยมือ)
2.10 ทะเบียนใบอนุญาต
ไฟล์เดียวกับ "ใบอนุญาตของฉัน" แต่เปิดมุมมองทีม (compliance board): การ์ด KPI (ใช้งานได้/ใกล้หมดอายุ ≤90 วัน/หมดอายุ/ทั้งหมด) — กด "เพิ่มใบอนุญาต" → เลือกพนักงาน, ประเภทใบอนุญาต (ใบอนุญาตแพทย์/พยาบาล/วุฒิบัตรเฉพาะทาง/ใบอนุญาตประกอบกิจการคลินิก/อื่นๆ), เลขที่, วันที่ออก, วันหมดอายุ, หน่วยงานที่ออก — แต่ละแถวมีปุ่ม "ส่งแจ้งเตือนหมดอายุ" (นอกเหนือจากที่ระบบส่งอัตโนมัติทุก 6 ชั่วโมง)
นพ.สมชาย · ใบประกอบวิชาชีพ
ว.12345 · หมดอายุ 30 ก.ย. 2569
≤90 วัน = ป้าย "ใกล้หมดอายุ" (เหลือง) · ปุ่มสามเหลี่ยม = ส่งแจ้งเตือนซ้ำด้วยมือ · ค่าเริ่มต้นไม่บล็อกการทำงาน (แจ้งเตือนอย่างเดียว)
2.11 เงินเดือน & ค่าเคส
ตัวช่วยประมวลผลเงินเดือนรายเดือน แบบ 3 ขั้นตอน:
- เลือกงวด — เลือกเดือน+ปีที่จะประมวลผล กด "เริ่มสร้างเงินเดือน"
- ตรวจสอบฉบับร่าง — ตารางพนักงานทุกคนที่ปฏิบัติงานในงวดนั้น (คำนวณอัตโนมัติ): เงินเดือนฐาน, ค่าหัตถการ(doctor fee), คอมมิชชั่น/อื่นๆ, WHT, หักรวม, สุทธิ, สถานะ(ฉบับร่าง/จ่ายแล้ว), ปุ่ม "ส่งสลิป LINE" ต่อคน — ปุ่ม "คำนวณใหม่" รีเฟรชฉบับร่าง
- ดำเนินการจ่าย — สรุปยอดรวม (รายได้รวม/รายการหักรวม/ภาษี WHT รวม/ยอดจ่ายสุทธิรวม) กด "ยืนยันและประมวลผลทั้งหมด"
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 ตรงๆ แต่ผลลัพธ์ที่พนักงานเห็นเหมือนกัน
⚙️ ตั้งค่า/ระบบ, งานผู้ดูแล และงานพื้นฐานร่วม
หมวดนี้ครอบ 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 แท็บย่อยของหมวดนั้น คลิกชื่อหมวดพาไปแท็บแรกที่เข้าถึงได้ ด้านในมีแถบแท็บสลับหน้าย่อย
หมวดที่มีป้าย "มีผลทั้งระบบ" = การตั้งค่าจากสาขาใดสาขาหนึ่งมีผลกับทุกสาขาพร้อมกัน (ไม่มีค่าตั้งแยกรายสาขา)
แต่ละหมวด = 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 / รับรู้เต็มแล้วแยกค่าใช้จ่าย)
จริง (คืนได้) vs แถม (โบนัส คืนไม่ได้ จำกัดบริการได้) · นโยบายครบกำหนด: ริบ/ต่ออายุ/ให้ผู้ดูแลตัดสิน
3) ตั้งค่าคลังสินค้า มีผลทั้งระบบ · เฉพาะ super-admin
- โหมดคลังสินค้า — "คลังจริง" (ตัดสต็อกจริงตาม FEFO ทุกครั้ง บล็อกถ้าของไม่พอ) หรือ "คลังเสมือน" (บันทึกเป็น "รายงานเบิก" อย่างเดียว ไม่ตัดสต็อกจริง ไม่บล็อกแม้ของไม่พอ) มีผลทันทีกับรายการจ่าย/ขายครั้งถัดไป
- ขายก่อนรับเข้า — 3 โหมด: "ปิด — ของไม่พอ ขายไม่ได้" (ค่าเริ่มต้น ปลอดภัยสุด) / "เตือนแล้วให้ผ่าน" / "ต้องมีสิทธิ์จึงยืนยันได้" (เฉพาะผู้ถือสิทธิ์ oversell) — ตั้งค่าระดับสาขาตัวเอง
"มีผลทั้งระบบ · เฉพาะ super-admin" · คลังเสมือนไม่ตัดสต็อกจริง · ขายก่อนรับเข้าคุมความเข้ม 3 ระดับ
4) การรักษา (EMR)
- ฟอร์มยินยอม (Consent) — จัดการเทมเพลตฟอร์มยินยอม แบ่งฟอร์มระบบกับฟอร์มของคลินิกเอง จัดกลุ่มตามหมวด (ทั่วไป/หัตถการ/ยาชา-ระงับความรู้สึก/ภาพถ่าย PDPA) แต่ละฟอร์มมีสถานะไล่ระดับ ฉบับร่าง → เผยแพร่แล้ว(แก้ไขไม่ได้อีก) → เลิกใช้ — สร้างใหม่/แก้ไข(builder ลากบล็อก)/โคลนเวอร์ชันใหม่/เผยแพร่/เลิกใช้/ผูก trigger — กรองตามสาขา
- วินัยการปิดเคส — เตือน/บล็อกการมอบหมายเคสใหม่ให้พนักงานที่มีเคสค้างเกินกำหนด: เลือกโหมด(ปิด/เตือน/ห้าม), บทบาทที่ถูกตรวจ, นิยาม "ค้าง" (กี่วัน+ผ่อนผันถึงกี่โมงเช้า), "ผู้ปิดเคสของคลินิก" (ข้อความ popup), ข้อยกเว้นรายบทบาท/รายคน(พร้อมวันหมดอายุ)
builder ลากบล็อก · เผยแพร่แล้ว = แก้ไม่ได้ (โคลนเวอร์ชันใหม่แทน) · แบ่งหมวด ทั่วไป/หัตถการ/ยาชา/ภาพถ่าย PDPA
5) ต้นทุน & ค่าตอบแทน
กฎต้นทุนซ่อนเร้น — แท็บย่อย: "ค่ามือหมอ" (Doctor Fee), "ค่าคอมมิชชัน" (Commission — บล็อกไม่ให้ตั้งกับบทบาทหมอ), "ต้นทุนอื่น" (Overhead/Lab/Other) และ "คำนวนย้อนหลัง" (Recompute Profit — ซ่อนไปเลยถ้าไม่มีสิทธิ์ cost.recompute.run)
DF แพทย์ฟรีแลนซ์
เปอร์เซ็นต์ · หัก ภ.ง.ด.3 3%
"คำนวนย้อนหลัง" ซ่อนถ้าไม่มีสิทธิ์ 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"
ปุ่ม "รีเซ็ตเป็น preset" ล้าง override ทั้งหมด · ปุ่ม "บันทึก" (เปิดใช้งานเมื่อมีการแก้ไขค้างอยู่) — สูตรสิทธิ์จริงที่ใช้งาน = (สิทธิ์จาก preset ∪ ที่เปิดเพิ่ม) − ที่ปิดไว้
แท็บ 2 · สิทธิ์ตาม Role
แก้ไข "ตัวบทบาท" เอง (ไม่ใช่แก้รายคน) + เพิ่ม/ลบบทบาทของคลินิกได้เอง — ซ้าย: รายชื่อบทบาททั้งหมด (ป้าย "ระบบ"/"คลินิก", ป้าย "แก้แล้ว" ถ้าถูกปรับ, จำนวนพนักงานที่ใช้, ป้ายเหลือง "ต้องอัปเดต N") — ปุ่ม "เพิ่มบทบาท": ตั้งรหัส+ชื่อที่แสดง → เริ่มต้นแบบ "ไม่มีสิทธิ์ใดๆ" และไม่ได้รับฟีเจอร์ใหม่ในอนาคตโดยอัตโนมัติเหมือนบทบาทระบบ
ขวา: ตารางติ๊กสิทธิ์ตามโมดูล ค้นหาสิทธิ์ได้ บทบาทระบบมีตัวกรอง "แสดงเฉพาะที่ต่างจากค่าเริ่มต้น" — ปุ่ม "คืนค่าเริ่มต้น" (บทบาทระบบที่ถูกแก้แล้ว) และ "ลบบทบาท" (บทบาทคลินิก — มีพนักงานใช้อยู่ต้องเลือกบทบาทปลายทางย้ายคนไปก่อน)
ในแท็บนี้มีส่วนต่อท้าย "การมองเห็นเคส (My-Cases)": ตารางกำหนดว่าแต่ละบทบาทเห็น "เห็นทั้งหมด" (ทุกเคสในสาขา) หรือ "เฉพาะเคสของตัวเอง" (รายการเคส/เคสรอปิด/มัดจำค้าง — ประวัติการรักษารายคนไข้ไม่ถูกจำกัดด้วยกฎนี้) — admin/super_admin เห็นทั้งหมดเสมอ ตั้งเป็นอย่างอื่นไม่ได้ (กันล็อกตัวเอง) ยกเว้นรายบุคคลทำได้โดยเปิดสิทธิ์ emr.cases.view_all ให้คนนั้นในแท็บ 1 — ปุ่ม "กลับค่าเริ่มต้นระบบ" ล้างนโยบายทั้งหมด
แท็บ 3 · การอนุมัติ
ส่วนที่ 1 "ผู้มีสิทธิ์อนุมัติ": กำหนดว่าตำแหน่งใดอนุมัติงานประเภทใดได้บ้าง — ตำแหน่งเริ่มต้นของระบบ (ป้ายเทา ไอคอนกุญแจ) ถอดออกไม่ได้ เพื่อกันตั้งค่าผิดจนไม่มีใครอนุมัติได้เลย เพิ่มตำแหน่งอนุมัติเสริมได้ (ป้ายฟ้า) — แก้ไขได้เฉพาะ admin/super_admin บัญชีอื่นดูได้อย่างเดียว ปุ่ม "บันทึกผู้อนุมัติ" มีผลทันทีทั้งระบบ
ส่วนที่ 2 "การอนุมัติการกระทำอ่อนไหว": ตารางการกระทำที่กระทบเงิน/สต็อก (แปลงแพ็คเกจเป็นเครดิต, แก้ไขหลังปิดเคส/บิลที่ชำระแล้ว, ยกเลิกเคสที่ปิดแล้ว, แทนที่แพ็คเกจ, โอนสิทธิ์/โอนเคส) แต่ละแถวมี toggle 2 อัน: "ใส่ PIN" และ "ขออนุมัติ" — "ขออนุมัติ" บันทึกค่าไว้ได้ แต่ระบบอนุมัติแบบ pending-change ยังไม่เปิดใช้งานจริง (ตอนนี้มีผลบังคับเฉพาะ 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) ได้ — เลื่อนเฉพาะแจ้งเตือนที่ส่งไปมือถือ กระดิ่งในแอปยังคงมีให้เห็นเสมอ
สมหญิง ใจดี ลูกค้า
ลบเมื่อ 20 ก.ค. · เหลือ 88 วัน
ถังขยะกู้คืนได้ 90 วัน · Integrity report-only ไล่ critical/high ก่อน · Logs กรองค่าเริ่มต้น "วันนี้" (กันโหลดหนัก)
เลือกหัวข้อที่ต้องการจากเมนูซ้าย
แต่ละหัวข้อคือหนึ่งงาน จบในหน้าเดียว — พิมพ์ในช่อง "ค้นหาหัวข้อ..." ได้เลย เช่น มัดจำ, ยกเลิก, สแกนบัตร
วิธีตั้งผู้อนุมัติส่วนลด / การขออนุมัติ
ผู้มีสิทธิ์อนุมัติ
ตำแหน่งใดอนุมัติงานประเภทใดได้บ้าง
ค่าเริ่มต้นของระบบ (ถอดออกไม่ได้)
อนุญาตเพิ่มเติม
วิธีเปิดฟีเจอร์แก้ไขราคา (แก้ราคาแมนนวล)
แก้ไขราคาแมนนวล
โบท็อกซ์ 50u
ราคาหลัก: ฿9,900ราคาใหม่ (บาท)
เหตุผล *
วิธีจัดการกลุ่มพนักงาน / สิทธิ์รายบุคคล (RBAC)
ตั้งค่า › สิทธิ์ & การแจ้งเตือน › สิทธิ์การใช้งาน
บทบาททั้งหมด
เลือกบทบาทจากรายการทางซ้ายเพื่อแก้ไขสิทธิ์
วิธีเพิ่มห้องตรวจ / ห้องทำหัตถการ
⚙ ตั้งค่าตารางเวลา
เวลาทำการ · วันหยุด · ช่วงเวลาที่ปิด · ความจุห้อง (มีผลกับช่วงเวลาว่างในการจอง)
ความจุห้อง (จำนวนคนที่รับได้พร้อมกันต่อช่วงเวลา)
วิธีตั้งเลขรันเอกสารอัตโนมัติ
รูปแบบเลขที่เอกสาร (แยกตามสาขา) ไม่มีผลทันที
วิธีตั้งที่อยู่ใบกำกับภาษีของคลินิก
ข้อมูลคลินิก (หัวใบเสร็จ)
ชื่อร้าน/แบรนด์ (บรรทัดหัวใบเสร็จ)
ชื่อนิติบุคคล (ตามจดทะเบียน)
เลขผู้เสียภาษี
ต้องเป็นตัวเลข 10–13 หลัก (หรือเว้นว่าง)
ตัวอย่างหัวใบเสร็จ
วิธีตั้งค่า Recall — ตามลูกค้าคอร์สใกล้หมด/ครบกำหนด
ลูกค้า › วงเงิน/คอร์สใกล้หมดอายุ
🕐 จำนวนวงเงินใกล้หมดอายุ
6 วงเงิน
⚠ หมดอายุแล้ว (ยอดถูกระงับ)
2 วงเงิน · ฿1,800
🛒 มูลค่าใกล้หมดอายุรวม
฿24,500
👤 มูลค่ารวมก่อน VAT
฿22,897
👤 จำนวนลูกค้า
4 ราย
วิธีเปิดเคส + ขาย + เก็บเงิน จบในหน้าเดียว
เวชภัณฑ์ที่ใช้ในหัตถการ (เข็ม สำลี ยาชา) ถูกตัดสต็อกและลงต้นทุนให้อัตโนมัติ แต่ ไม่ขึ้นบนใบเสร็จลูกค้า — ของแถมที่ตั้งราคา ฿0 ต่างออกไป คือขึ้นบนใบเสร็จ
วิธีสแกนบัตรประชาชนเปิดลูกค้าใหม่
🔍 ลูกค้า (ค้นหาด้วย HN / ชื่อ / เบอร์โทร) *
วิธีเลือกผู้ขาย (Sale) และขอเปลี่ยนผู้ขาย
💲ผู้ขาย (Sale) ค่าเริ่มต้น = ผู้เข้าสู่ระบบ
วิธีให้ส่วนลดรายการ vs ส่วนลดทั้งบิล
ชำระเงิน — ขั้น 2/3: ส่วนลด & โปรโมชั่น
✕มีรหัสคูปอง?
+ สร้างคูปองส่วนลดรายการที่เลือก
วิธีคิดค่าธรรมเนียมบัตร (3% / 5% / กำหนดเอง)
อัตราค่าธรรมเนียม
วิธีรับชำระเต็มจำนวน / บางส่วน / เข้ารับบริการก่อน
รูปแบบการชำระ
วิธีรับมัดจำ
มัดจำ ≠ ชำระบางส่วน — มัดจำคือเงินที่ยังไม่ถือเป็นรายได้จนกว่าลูกค้าจะมารับบริการ ระบบแยกสองอย่างนี้ในรายงานการเงิน อย่าใช้สลับกัน
วิธีรับเงินหลายช่องทางในบิลเดียว (แบ่งจ่าย)
💳 เลือกช่องทางการชำระเงิน
แตะเพื่อเลือกช่องทาง (เลือกได้หลายช่องทาง · แบ่งจ่ายหลายใบต่อช่องทางได้)
วิธีรับเงินโอน + แนบสลิป
วิธีพักบิล แล้วกลับมาทำต่อ
แท็บพักบิลที่มีจุดสีส้มแปลว่ามีเงินจริงที่รับมาแล้วค้างอยู่ — ควรเคลียร์ให้จบภายในวัน ไม่งั้นยอดปิดร้านจะไม่ตรงกับเงินในลิ้นชัก
วิธีตามเก็บเงินเคสค้างชำระ (เคสรอปิด)
🗒 เคสรอปิด
ทั้งหมด มัดจำค้าง 1 รีเฟรชรายการโบท็อกซ์ 50u, ทรีตเมนต์หน้าใส
ลูกค้าตัวอย่าง
OPD: 0001ผู้ให้บริการ: พญ. ตัวอย่าง
ยอดค้างชำระ
฿5,900
ชำระแล้ว ฿500 / รวม ฿6,400
วิธีตัดใช้สิทธิ์คอร์ส (Redeem — ไม่คิดเงิน)
🛒 ระบบจุดขาย (POS)
เลือกสินค้า/บริการ + เปิดเคส หรือดูเคสรอปิดที่รอดำเนินการ
🏢 กำลังขาย: สาขา 1🎟 สิทธิ์แพ็คเกจของลูกค้า
1 แพ็คเกจกด "ใช้สิทธิ์" เพื่อเปิด OPD ตัดใช้สิทธิ์ (ไม่คิดเงิน) แล้วให้หมอลงผลการรักษา
Buffet 3 เดือน
ซื้อ 12 พ.ค. 69
ทรีตเมนต์หน้าใส เลือกได้
เหลือ 4 ครั้ง
Meso Fat
เหลือ 7.5 cc (จองไว้ 1 cc)
รายการสินค้า/บริการ (แคตตาล็อกขาย — เลื่อนลงมาอยู่ใต้กล่องสิทธิ์)
โบท็อกซ์ 50u
฿4,900
ฟิลเลอร์ 1cc
฿9,900
ทรีตเมนต์
฿1,500
วิธีโอนสิทธิ์คงเหลือให้ลูกค้าคนอื่น
วิธีแปลงรายการที่จ่ายแล้วเป็นสิทธิ์ไว้ใช้ภายหลัง
วิธีเช็คอินลูกค้า → เปิดเคสส่งเข้าห้องตรวจ
นัดที่จองผ่านตู้/ออนไลน์แต่ยังไม่มีโปรไฟล์ จะติดที่ขั้นนี้เสมอ — สร้างลูกค้าที่ POS แล้วกลับมากดใหม่ได้เลย ไม่ต้องจองใหม่
วิธีวาดชาร์ต / มาร์กจุด / ใช้รูปคนไข้
เคสที่มีหมอหลายคน แต่ละคนวาดคนละชั้น ไม่ทับกัน — กด "เพิ่ม chart" เพื่อเปิดชั้นใหม่ ป้าย "ชาร์ตหลัก" คือชั้นฐาน
วิธีลงยา/เวชภัณฑ์ที่ใช้ (ตัดสต็อกจากเคส)
ไหม Cog 19g×60 รอยืนยัน
THR-004 · 2 เส้น · Lot LT-X69PWวิธีบันทึกโน้ตแพทย์ / รหัส ICD-10 / ลายเซ็น
เคส #VI-2608-0042
HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการคอลัมน์ขวาของแท็บ "ชาร์ต & บันทึก" (ข้าง Facechart) — ส่วนบนสุดคือ Doctor's Note
📄 Doctor's Note
ยังไม่มีบันทึก
พิมพ์หรือเขียนโน้ตด้านล่างเพื่อบันทึกโน้ตของแพทย์
เขียนหรือพิมพ์บนกระดาษเดียวกัน — สลับด้วยปุ่ม พิมพ์ / เขียนมือ (ล้าง = ลบเฉพาะลายมือ)
วิธีถ่าย/เทียบรูป Before – After
🖼 ภาพเปรียบเทียบ Before / After 0 รูป
มีเฟซชาร์ตเป็นไกด์ให้วาด/มาร์กจุด เลือกเลย์เอาต์ได้หลายแบบ แล้วถ่ายหรืออัปโหลดทับได้เลย
วิธีระบุ "ผู้ทำ" รายบริการ (ใช้คิดค่ามือ)
👥 ทีมผู้ดูแล / ผู้ทำ
สร้างเคสโดย เคาน์เตอร์ A ⇄ เปลี่ยนเซลล์ ▤ แยกรายบริการ + ทีมงานเคสวิธีปิดเคส / ส่งไปชำระเงิน
ยอดรวมเคสนี้
฿15,999
ยังไม่ชำระ · ค้าง ฿15,999
วิธีเพิ่มรายการที่ลืมบันทึก หลังปิดเคสแล้ว
วิธีแก้จำนวนที่ใช้ บนเคสที่ปิดแล้ว
กรณีเดียวที่ระบบไม่ยอมให้ลดจำนวน คือหาไม่เจอว่าตอนนั้นตัดสต็อกจากล็อตไหน ทั้งในรายการและในประวัติการตัดสต็อก — ถ้าเจอในประวัติ ระบบจะคืนเข้าล็อตนั้นให้เอง
วิธีบันทึกเงินที่รับเพิ่มจากหน้าเคส
วิธีดูประวัติการรักษาเดิมของคนไข้ระหว่างเปิดเคส
วิธีบันทึกแพ้ยา / ประวัติสุขภาพ
เคส #VI-2608-0042
HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการ📈 ประวัติสุขภาพ
แพ้ยา
Penicillin
วิธีทำใบยินยอม (Consent) และเซ็นชื่อ
เคส #VI-2608-0042
HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการ🖋 เลือกแม่แบบหนังสือยินยอม
หนังสือยินยอมรับการทำหัตถการฉีดฟิลเลอร์
หัตถการฟอร์มข้อความ · ฉบับ 2
✅ เซ็นแล้วในเคสนี้ 0 ⬆ อัปโหลดฟอร์มที่เซ็นแล้ว
ยังไม่มีหนังสือยินยอมที่เซ็นในเคสนี้
วิธีเขียนโน้ตเคส (บันทึกภายใน)
📋 โน้ตเคส +
โน้ตภายใน — ไม่ขึ้นใบเสร็จ ไม่เห็นโดยลูกค้า · เพิ่ม/ลบได้ทุกสถานะเคส
วิธีโอนเคสไป HN อื่น (คีย์ผิดคน)
วิธียกเลิกเคส/บิล แล้วคืนเป็นเครดิต
ใบเสร็จของเคสที่ยกเลิกแล้ว จะไม่ถูกนับเป็นยอดขายอีก และถ้าพิมพ์ซ้ำจะมีแถบ “ยกเลิก” อยู่บนใบ — ป้องกันไม่ให้ใบที่ยกเลิกแล้วถูกใช้เหมือนใบจริง
วิธียกเลิกแบบไม่คืนเงิน (เคสคีย์ผิดคน — แอดมิน)
ลูกค้าตัวอย่าง HN: 0001 ชำระแล้ว · ยังไม่ได้ทำ
เคส VI-XXXX · 5 ส.ค. 2569
ชำระแล้ว ฿5,999 · ค้างชำระ ฿0
วิธียกเลิกเคสที่ปิดไปแล้ว
ใบเสร็จของเคสที่ยกเลิก — เกิดอะไรขึ้น
R-6608-0142 POS
฿5,999.00 · 5 ส.ค. 2569
วิธีรับสินค้าเข้าคลัง (GR) พร้อม Lot และวันหมดอายุ
ต้นทุน/หน่วยเว้นว่างได้ ใบจะขึ้นสถานะ "รอบัญชีเติมต้นทุน" — ของเข้าสต็อกแล้วใช้ได้เลย ไม่ต้องรอฝ่ายบัญชี
วิธีปรับยอดสต็อก (ของหาย/นับเจอไม่ตรง)
วิธีโอนสินค้าข้ามสาขา/ข้ามคลินิก
คลัง › โอนออกภายนอก
+ สร้างใบโอนออกยังไม่มีใบโอนออกภายนอก
วิธีดูล็อต / ของใกล้หมดอายุ
มูลค่าสต็อก
฿1.2M
ใกล้หมด ⚠
4
ใกล้หมดอายุ 🗓
2
วิธีเคลมสินค้า (ของเสีย/ปัญหาจากผู้ขาย)
คลัง › เคลมสินค้า
+ สร้างใบเคลมมูลค่าเคลมค้าง (ยังเป็นทรัพย์สิน)
฿12,400
จำนวนค้างเคลม
3
ใบเคลมค้าง
1
วิธีเพิ่มลูกค้าใหม่ / ค้นหาลูกค้า
วิธีติดป้ายกำกับลูกค้า (KOL / รีวิว ฯลฯ)
ป้ายกำกับลูกค้า
ยังไม่มีป้ายกำกับในระบบ — สร้างได้ที่เมนู ตั้งค่า > ป้ายกำกับลูกค้า
ป้ายบนการ์ดลูกค้า:
ยังไม่มีป้ายกำกับวิธีเติม/ตัด/โอนเครดิตในกระเป๋าเงินลูกค้า
กระเป๋าเงินลูกค้า (แท็บ "เครดิต")
เครดิตสด
🗓 หมดอายุ 31 ธ.ค. 2569
เครดิตโบนัส (ของแถม)
🗓 ⚠ ใกล้หมดอายุ 15 ส.ค. 2569 (อีก 10 วัน)
โบนัสโอนไม่ได้ (ของแถมผูกกับคนที่ซื้อ) — จึงไม่มีปุ่ม "โอนวงเงิน"
วิธีส่ง SMS หาลูกค้าเฉพาะกลุ่ม
วิธีสร้างนัดใหม่ / นัด Walk-in
วิธียืนยันนัด / จัดการนัดจาก LINE
รายละเอียดนัด
AP-680805-012
👤 ข้อมูลลูกค้า
ชื่อ
ลูกค้าตัวอย่าง
เบอร์โทร
08x-xxx-xxxx
อีเมล
—
รหัสลูกค้า (HN)
—
📅 รายละเอียดนัด
บริการ
โบท็อกซ์ 50u
วันที่
พุธ, 6 สิงหาคม 2569
เวลา
14:00 - 14:30
ระยะเวลา
30 นาที
ผู้ให้บริการ
พญ. ตัวอย่าง
ช่องทางการจอง
LINE (ลูกค้าจองเอง)
วิธีตั้ง/ยกเลิกวันหยุด วันห้ามนัด
ตั้งค่านัดหมาย — เวลาทำการ · วันหยุด · ช่วงเวลาที่ปิด · ความจุห้อง (มีผลกับช่วงเวลาว่างในการจอง)
เพิ่มวันหยุด
วันที่
เลือกวันที่ชื่อ (เลือกได้)
เช่น วันสงกรานต์เปิดบางส่วน ตั้งแต่ – ถึง
–เว้นช่อง "เปิดบางส่วน" ว่างไว้ = ปิดทั้งวัน
วันหยุดที่ตั้งไว้
ยังไม่มีวันหยุด
วิธีดูรายงานยอดขายประจำวัน/เดือน
รายได้รวมในช่วงเวลา
฿186,400
รายรับทั้งหมดรวมภาษีมูลค่าเพิ่ม
จำนวนบิลทั้งหมด
42 บิล
เฉลี่ยต่อบิล (Ticket Size)
฿4,438
วิธีดูรายงานค่ามือหมอ (DF) และคอมมิชชั่น
| วันที่ทำ | เลขเคส | HN | ชื่อผู้ป่วย | บริการ/หัตถการ | ยา/เวชภัณฑ์ | ตัดใช้วันนี้ | ใช้สะสม | ราคาอ้างอิง (ฐานค่ามือ)ไม่ใช่รายได้/ยอดชำระ | ใช้จากคอร์ส | แพทย์ | ผู้ช่วย | ค่ามือ(กรอกเอง) | หมายเหตุ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5 ส.ค. | VI-XXXX | 0001 | ลูกค้าตัวอย่าง | ฉีดฟิลเลอร์ใต้ตา | ยาชา 2% | 1 | 3/10 | ฿9,900 | Filler Program | พญ. ตัวอย่าง | น้องมิ้นท์ | — | — |
วิธีดูลูกหนี้ค้างชำระ (AR)
รายงาน › ค้างชำระ (AR) · Export Excel ได้
ลูกค้าค้างชำระ 👥
4 ราย
ยอดค้างชำระรวม 🪙
฿23,499
เกิน 90 วัน 🗓
฿4,000
จำนวนบิลค้าง 👛
5 บิล
วิธีดูรายละเอียดการชำระของเคส (เงินมาจากไหน)
เคส #VI-2608-0042
HN 0001 · ลูกค้าตัวอย่าง กำลังใช้บริการท้ายแท็บ "รายการ & บิล" (ใต้รายการยา/เวชภัณฑ์) — แผงนี้ขึ้นเมื่อเคสปิด/จ่ายครบ
👛 รายละเอียดการชำระเงิน
🧾 เลขที่ R-XXXXยอดชำระสุทธิ
฿5,999.00
วิธีจัดตารางกะพนักงาน
🗓 จัดตารางกะการทำงาน
HR › จัดการบุคคล › จัดตารางกะ — สงวนสิทธิ์สำหรับฝ่ายบุคคล
สัปดาห์
4 – 10 ส.ค. 2569
▶ สัปดาห์นี้ เช้า 08:00-16:00 บ่าย 13:00-21:00 ดึก 21:00-05:00 หยุด ✓ พนักงานอนุมัติ 🕐 รออนุมัติ| พนักงาน | จ. 4 | อ. 5 | พ. 6 | พฤ. 7 | ศ. 8 |
|---|---|---|---|---|---|
| น้องมิ้นท์ (BT) | เช้า | เช้า | หยุด | บ่าย | ดึก |
| น้องฝ้าย (ผู้ช่วย) | บ่าย | เช้า | เช้า | หยุด | เช้า |
วิธีขอแลกเวร / ขอลา / ขอ OT
กะของฉัน
ส่งแผนการเข้างานรายสัปดาห์ หรือขอแลกเวรกับเพื่อนร่วมงาน
แลกเวร พ. 6 ส.ค. (เช้า) กับ น้องฝ้าย — ศ. 8 ส.ค. (บ่าย)
รอเพื่อนตอบรับ → รอหัวหน้าอนุมัติ
วิธีพิมพ์ใบเสร็จ / พิมพ์ซ้ำ
🧾 ใบเสร็จรับเงิน 2
R-6608-0142 POS
฿5,999.00 · 5 ส.ค. 2569
R-6608-0139 🖥 จากตู้ kiosk
฿4,000.00 · 5 ส.ค. 2569
เวชภัณฑ์ทำไมไม่ขึ้นบนใบเสร็จ (และของแถมขึ้น)
ในเคส (จอ BT)
วิธีแบ่งใช้คอร์สให้อีก HN (แบ่งครั้ง + แบ่งยา)
วิธีค้นในประวัติ แล้วให้ไทม์ไลน์เหลือเฉพาะที่ค้น
วิธีดูวงเงินลูกค้าและเครื่องมือลูกค้าจากในหน้าเคส
วิธีใช้สมุดโน้ตลูกค้า (โน้ตสั้น + อัลบั้มรูป)
วิธีค้นลูกค้าด้วยชื่อเล่นและด้วย HN
วิธีหาของในหน้าขาย และสร้าง/คัดลอกบริการ-แพ็คเกจจากหน้าขายเลย
วิธีอ่านรายงานค่ามือ / คอมมิชชั่น และดูว่าเงินมาจากเคสไหน
วิธีตั้งอัตราค่ามือหมอและค่ามือผู้ช่วยให้ระบบคิดเอง
วิธีใช้รายงานเคสติดป้าย (รีวิว / KOL)
วิธี Export ตารางนัดเป็นไฟล์ Excel สำหรับพิมพ์
🧾 ใบเสร็จรับเงิน (ลูกค้าเห็น)