MobileHub
USER MANUAL
ระบบจัดการร้านมือถือ Multi-Tenant SaaS
เวอร์ชัน 2.0 | อัปเดตล่าสุด: 2 ตุลาคม 2569 (⭐⭐ เพิ่มอุปกรณ์เสริม/อะไหล่ด้วยรหัสของสินค้าที่เคยลบไปแล้วได้ — ระบบกู้สินค้าเดิมกลับมาให้ แทนการแจ้งว่า "รหัสนี้มีอยู่แล้ว" ทั้งที่ค้นหาไม่เจอ · ปุ่มคัดลอกรายการไปสาขาอื่นก็กู้ของที่เคยลบให้ด้วย (ดู §3.2 · §5.4 · §16.5) / ⭐⭐ หน้าต้อนรับครั้งแรกพาไปทำงานจริงชิ้นแรก — เจ้าของร้าน/แอดมินร้านที่เข้าระบบครั้งแรกจะเห็นรายการ รับเครื่องซ่อมใบแรก · เพิ่มมือถือเข้าสต๊อก · เพิ่มอุปกรณ์เสริม · เพิ่มอะไหล่ · ขายบิลแรก แทนรายการตั้งค่าเดิม · ข้อมูลหลัก (ยี่ห้อ รุ่น สี ความจุ ประเภทซ่อม ฯลฯ) และสาขาแรก ระบบตั้งไว้ให้ตั้งแต่สมัครแล้ว ไม่ต้องตั้งค่าก่อนเริ่มใช้ · Tour แนะนำระบบ ก็พาไล่เมนูของ 5 งานนี้ตามลำดับเดียวกัน (ดู §2 "แนะนำระบบ") / ⭐⭐ ทำไมกำไรรายวันในรายงานสรุปการเงินไม่ตรงกับหน้า "ยอดรับเงินวันนี้" — 2 หน้าหักต้นทุนอะไหล่ซ่อมคนละวัน (สรุปการเงิน = วันที่ใส่อะไหล่ลงใบซ่อม · ยอดรับเงินวันนี้ = วันที่ลูกค้าจ่ายเงิน) ตัวเลขไม่ได้ผิดทั้งคู่ · หน้าสรุปการเงินมีหมายเหตุกำกับแล้ว (ดู §11) / ⭐⭐⭐ ติดต่อทีมงาน MobileHub ได้จากในระบบแล้ว — เจ้าของร้าน/แอดมินร้านเห็น ปุ่มลอยมุมขวาล่าง กดแล้วเลือกแชท LINE · Messenger · แจ้งปัญหา · คู่มือ ได้ทันที · พนักงานทุกคนเข้าได้จากเมนู ติดต่อ → ติดต่อทีมงาน · ปุ่มลอยไม่แสดงในหน้าขายสินค้า (POS) เพื่อไม่ให้บังปุ่มชำระเงิน · และ อีเมลเตือนช่วงทดลองใช้/ต่ออายุเริ่มส่งถึงร้านจริงแล้ว (ดู §13.A) / ⭐⭐⭐ ต้นทุนอะไหล่ที่ร้านใส่เอง ไม่ถูกทับตอนกด "ส่งงาน" อีกแล้ว — เดิมตอนกดส่งงาน ระบบตัดอะไหล่ออกจากคลังแล้วเอา ราคาทุนที่ตั้งไว้ในคลัง ไปเขียนทับต้นทุนที่ร้านแก้ไว้ (เช่น แก้เป็น 350 แต่กลับเป็น 660 · หรือถ้าในคลังตั้งไว้ 0 ต้นทุนก็หายเป็น 0) และหลังส่งงานแก้กลับไม่ได้ · ตอนนี้ ต้นทุนที่ร้านใส่คือตัวที่ระบบใช้ และ ส่งงานแล้วยังแก้ต้นทุนได้ · 🔴 งานที่ต้นทุนเพี้ยนไปแล้ว ร้านเปิดงานแล้วแก้ต้นทุนกลับเองได้เลย (ดู §5.3 "ช่องต้นทุน/ชิ้น") / ⭐⭐⭐ ช่อง "ค่าแรง" ที่หน้างานช่าง เริ่มต้นที่ 0 เสมอ — เดิมระบบเอา "ราคาประเมิน" มาใส่ให้ ทำให้พอใส่อะไหล่แล้ว ยอดบวกซ้ำ และลบค่าแรงออกแล้วมันเด้งกลับ · ราคาประเมินยังอยู่ครบ แค่ไม่ไหลเข้าช่องค่าแรงอีก · งานเก่าที่บันทึกค้างไว้ไม่ถูกแก้ย้อนหลัง (ดู §5.4) / ⭐⭐⭐ ใบรับประกันของลูกค้า หน้าตาเหมือนใบที่ร้านพิมพ์ครบ 10 จุดแล้ว — เจ้าของร้านทักว่ายังไม่เหมือน วัดแล้วต่างกันจริง 10 จุด — ป้ายส้มมุมขวา · ลำดับบล็อก · กล่องความคุ้มครอง/ข้อยกเว้นคู่กันพร้อม ✓/✗ · ท้ายใบ "ขอบคุณที่ใช้บริการ" · ช่องลงนาม · ป้ายในกล่องข้อมูล · 🔴 และคำว่า "ฟรี" ที่หายจากบล็อกวิธีเคลมบนใบ PDF ⇒ กระดาษกับไฟล์เคยสัญญากับลูกค้าคนละอย่าง · ใบยังพอดี 1 หน้า · ใบที่ร้านพิมพ์ไม่เปลี่ยนเลย (ดู §5.7) / ⭐⭐⭐ ใบรับประกันที่ลูกค้าโหลด เป็นใบเดียวกับที่ร้านพิมพ์แล้ว — เดิมใบที่ลูกค้าได้เป็น ขาวดำ และขาดหลายอย่าง · ตอนนี้มี สีครบ (หัวเอกสารส้ม · กล่องความคุ้มครองเขียว · กล่องข้อยกเว้นแดง · แถบระยะเวลาไล่สี) พร้อม โลโก้ร้าน · เงื่อนไขการรับประกันท้ายใบ · เวลาที่ออกใบ · อีเมลและที่อยู่ลูกค้า · ประเภทเครื่อง · 🔴 ร้านที่เคยตั้งข้อความเงื่อนไขท้ายเอกสารเองไว้ จะได้ข้อความของตัวเองบนใบ PDF ตั้งแต่วันนี้ (เดิมใบ PDF ไม่มีบล็อกนี้เลย) · ใบยังพอดี 1 หน้าเท่าเดิม แม้ใบที่มีรับประกัน 4 รายการ (ดู §5.7) / ⭐⭐⭐ ใบรับประกันที่ลูกค้าโหลดจากลิงก์ติดตาม มีข้อมูลร้านครบแล้ว — เดิมใบที่ลูกค้าได้ ไม่มีชื่อร้าน ที่อยู่ เบอร์โทร เลขประจำตัวผู้เสียภาษี และกล่อง "ข้อมูลลูกค้า" มีหัวข้อแต่ไม่มีค่าเลย · ที่สำคัญที่สุดคือบล็อก "วิธีเคลมประกัน" ไม่มีเบอร์ร้าน ⇒ ลูกค้าโทรกลับหาร้านไม่ได้ · ตอนนี้ใบที่ลูกค้าโหลด มีข้อมูลร้านและข้อมูลลูกค้าครบ (หน้าตาเท่ากันครบในรอบถัดมา) (ดู §5.7) / ⭐⭐⭐ ใบส่งคืนหลังเคลมประกัน พิมพ์เวลาที่ปิดเคลมจริงแล้ว — เดิมป้ายบนใบเขียนว่า "วันที่ส่งคืน" แต่พิมพ์ เวลาที่รับเครื่องเข้าเคลม (ร้านแจ้งจริง: ปิดเคลม 16:13 แต่ใบพิมพ์ 14:56) ⇒ กระดาษที่ลูกค้าถือกลับพูดไม่ตรงความจริง · ใบเก่าที่ยังไม่ได้ปิดเคลมจะขึ้น - แทนการเดาเวลา และยังพิมพ์ได้ตามปกติ · ใบรับเครื่องเข้าเคลมไม่เปลี่ยนเลย (ดู §5.8) / ⭐⭐ เวลาในกล่องรายละเอียดของ Audit Log อ่านง่ายแล้ว — เดิมกล่อง "ข้อมูลเก่า/ข้อมูลใหม่" แสดงเวลาดิบแบบ "2026-08-16T09:38:18.050Z" ซึ่ง ช้ากว่าเวลาไทย 7 ชั่วโมง ⇒ ร้านลบเองแล้วอ่านผิด · ตอนนี้แสดง "16 ส.ค. 2569 16:38 น." รูปแบบเดียวกับเวลาข้างบนเป๊ะ · ข้อมูลในระบบไม่ถูกแก้ เปลี่ยนแค่วิธีแสดงผล (ดู §14.5) / ⭐ หน้าต่าง "ผูกอะไหล่/อุปกรณ์เสริม" เปิดมาที่แท็บ "อุปกรณ์เสริม" แล้ว — ตามที่ร้านแจ้งว่าไม่ได้ใช้แท็บอะไหล่ที่ช่องค่าบริการ เพราะแถวอะไหล่มีปุ่ม "เพิ่มอะไหล่" ที่ตัดสต๊อกอยู่แล้ว · แท็บ "อะไหล่" ยังอยู่ครบ และคำใบ้ใต้ช่องค้นหาสลับด้านตามแท็บที่เปิดอยู่ (ดู §5.3) / ⭐⭐⭐ ผูก "อุปกรณ์เสริม" เข้ากับค่าบริการได้แล้ว — เดิมปุ่มค้นเฉพาะคลังอะไหล่ ร้านที่เก็บ ฟิล์ม · เคส · สายชาร์จ ไว้ที่คลังอุปกรณ์เสริมจึงหาของตัวเองไม่เจอเลย · ตอนนี้หน้าต่างเลือกมี 2 แท็บ และป้ายบอกว่ามาจากคลังไหน ⇒ ติดฟิล์มแล้วสต๊อกฟิล์มลดจริง (ดู §5.3) / ⭐⭐⭐ แชท LINE เพิ่ม 5 อย่าง — เส้นตัดวันที่ (วันนี้/เมื่อวาน/วันที่ พ.ศ.) · ตอบกลับข้อความ พร้อมกระโดดไปข้อความต้นทาง · ค้นหาข้อความในห้อง · คำใช้บ่อย ⚡ พร้อมหน้าตั้งค่า ⚙ ใส่ตัวแปร {ชื่อลูกค้า} ได้ · ปุ่มแทรกชื่อ · ช่องพิมพ์บนมือถือกว้างขึ้นจาก ~182 เป็น 246 พิกเซล (ดู §14.6C) / ⭐ ถอดปุ่มส่งสติกเกอร์ออกจากหน้าแชท LINE ตามที่เจ้าของร้านสั่ง — สติกเกอร์ที่ลูกค้าส่งเข้ามายังแสดงตามปกติทุกอย่าง · ปุ่มรูปและปุ่มไฟล์เอกสารยังอยู่ครบ (ดู §14.6C) / ⭐ ขายเครื่องที่ยกเลิกบิลหรือคืนเงินไปแล้วใหม่ได้ — เดิมระบบขึ้นข้อผิดพลาดและขายไม่ได้อีกเลยตลอดไป · รับซื้อเครื่องที่เคยขายออกไปกลับเข้ามาก็ได้แล้ว เมื่อบิลเดิมถูกยกเลิก / ⭐⭐ ยกเลิกรอบนับสต็อกที่เปิดผิดได้แล้ว — เดิมเปิดผิดสาขา/เปิดซ้ำแล้วเอาออกไม่ได้เลย และรอบที่ค้างจะล็อกสาขานั้นไม่ให้เปิดรอบใหม่ · ผู้จัดการขึ้นไปกดยกเลิกได้ ต้องระบุเหตุผล ≥ 10 ตัวอักษร · ไม่แตะจำนวนสต๊อกและไม่ลบตัวเลขที่นับไปแล้ว · ยกเลิกแล้วกู้คืนไม่ได้ (ดู §3.3) / ⭐ พิมพ์ใบรับประกันเก่าซ้ำ ได้รายการอะไหล่ "ฉบับที่ลูกค้าเซ็นรับไป" แล้ว — เดิมจอแสดงรายการฉบับปัจจุบันซึ่งไม่ตรงกับ PDF · ใบเก่าที่ระบบยังไม่ได้เก็บรายการไว้ แสดงเหมือนเดิมทุกอย่าง (ดู §5.6) / ⭐ เข้าเว็บครั้งแรกไม่กะพริบอีกแล้ว — เดิมหน้าโหลดใหม่ 1 รอบทุกครั้งที่เปิดเว็บจากเครื่องใหม่ / ⭐⭐ แชท LINE ส่งไฟล์เอกสารได้ · ผูกห้องแชทกับลูกค้าในระบบได้ · หน้า "ลูกค้าทั้งหมด" มีปุ่มแชท (แพ็คเกจเอ็นเตอร์ไพรส์ · ดู §14.6C) — ร้านที่แพ็คเกจไม่ถึงจะไม่เห็นเมนู "แชท LINE" แต่ยังเข้าเมนู "LINE OA" เพื่อปิด/ลบการเชื่อมต่อของตัวเองได้เสมอ / ⭐⭐ เอกสารที่พิมพ์ให้ลูกค้าแยก "ค่าอะไหล่" กับ "ค่าบริการ" แล้ว — ใบเสร็จเล็กพิมพ์ ชื่อรายการทีละบรรทัด (เดิมมีแต่ยอดรวม) · ใบรับประกัน ไม่แสดงค่าบริการ · หน้า "งานของฉัน" ของช่างแยกบรรทัดให้ · ใบเก่าพิมพ์ซ้ำได้เหมือนเดิมทุกตัวอักษร และยอดเงินไม่เปลี่ยน (ดู §5.6) / ⭐⭐ ลงค่าบริการที่ไม่ใช่อะไหล่ได้แล้ว — ปุ่ม "เพิ่มค่าบริการ" ในงานซ่อม (ติดฟิล์ม · ค่าล้างเครื่อง ฯลฯ) และหน้าติดตามของลูกค้าแยก ค่าอะไหล่ / ค่าบริการ ให้ชัด · งานเก่าทุกใบตัวเลขเท่าเดิม (ดู §5.3) / ⭐⭐ ระบบเตือนเมื่อเพิ่มลูกค้าด้วยเบอร์ที่มีอยู่แล้ว — เลือก "ใช้ลูกค้าคนนี้" หรือ "สร้างเป็นลูกค้าใหม่" · เตือน ไม่ห้าม (ดู §8) / ⭐ ช่อง "อาการที่แจ้ง (แสดงให้ลูกค้าเห็น)" — ช่องใหม่แยกจากช่องอาการเดิมที่เป็นบันทึกภายใน (ดู §5.3) / ⭐ ไฟล์รูป/วิดีโอในแชท LINE เก็บ 30 วัน แล้วระบบลบไฟล์ให้เอง ประวัติแชทยังอยู่ครบ (ดู §14.6C) / ⭐⭐ หน้าแชท LINE ขึ้นข้อความเองทันที ไม่ต้องรีเฟรช · แสดงชื่อ LINE จริงแทนรหัส · ส่งรูปได้ (ดู §14.6C) / ⭐ ปุ่มทดสอบการเชื่อมต่อ LINE OA แสดงคำตอบจริงจาก LINE เมื่อไม่ผ่าน (ดู §14.6) — และแก้บั๊กที่ทำให้ปุ่มนี้ปฏิเสธโทเคนที่ถูกต้อง / ⭐⭐ แยกรูปก่อนซ่อม / หลังซ่อม — หน้างานซ่อมมีช่องแนบรูปเพิ่มอีก 1 ช่องชื่อ รูปถ่ายเครื่อง (หลังซ่อม) (ไม่บังคับ · ทุกแพ็คเกจ) และหน้าติดตามของลูกค้าจะ แยกเป็น 2 กลุ่มให้เอง เมื่อร้านใส่รูปหลังซ่อมไว้ · งานเก่าที่ไม่มีรูปหลังซ่อม แสดงเหมือนเดิมทุกอย่าง และ ระบบไม่ย้ายรูปเก่าไปช่องใหม่ให้อัตโนมัติ (ดู §5.3B และ §5.7) / ⭐⭐ หน้าติดตามงานซ่อมของลูกค้าแสดงรูปเครื่อง · ปุ่มดาวน์โหลดเอกสาร · ประวัติสถานะ (แพ็คเกจโปรเฟสชันนอลขึ้นไป · ดู §5.7) — ร้านส่ง ลิงก์เดียว แทนการไล่ส่งไฟล์ทีละอันทางไลน์ · มี ปุ่มคัดลอกลิงก์ติดตาม ที่หน้างานซ่อมแล้ว (ทุกแพ็คเกจ) · ใบรับประกันงานซ่อมดาวน์โหลดเป็น PDF ได้แล้ว พร้อมฟอนต์ไทยฝังในไฟล์ / ⭐⭐ เมนูใหม่ LINE OA (/line-oa · แพ็คเกจเอ็นเตอร์ไพรส์ · ดู §14.6) — ผูก LINE Official Account ของร้านเข้าระบบ เพื่อเตรียมแจ้งสถานะงานซ่อมและส่งเอกสารหาลูกค้าทางไลน์ · แจ้งสถานะงานซ่อมอัตโนมัติทางไลน์ใช้งานได้แล้ว (ดู §14.6B) · มีหน้าแชท LINE ในระบบแล้ว (/line-chat · ดู §14.6C) / ⭐ 2 ก.ย. 2569 — แก้ตาม feedback ร้าน 3 ข้อ: ค้นหางานซ่อมด้วย เลขงานสั้นที่ลูกค้าคัดลอกจากหน้าติดตาม ได้แล้ว (§5.3) · ตั้ง ขั้นต่ำอะไหล่ = 0 = ไม่ติดตาม เพื่อไม่ให้ของรุ่นเก่าโผล่ในรายการสั่งซื้อ (§5.4) · แนบรูปเครื่องได้จากในเช็คลิสต์ก่อน/หลังซ่อม โดยตรง ไม่ต้องไปหน้าแก้ไข (§5.5) / ⭐⭐ ใบรับซ่อมมีรหัสผูกบัญชี LINE + QR แล้ว (ร้านเอ็นเตอร์ไพรส์ที่เชื่อม LINE OA · ดู §14.6D) — ลูกค้าสแกน/พิมพ์รหัสในแชทเพื่อรับแจ้งสถานะอัตโนมัติ · โซ่ LINE OA ครบวงจรแล้ว — อ่านและตอบข้อความลูกค้าได้จากในระบบ ไม่ต้องสลับไปแอป LINE OA / ⭐ ร้านที่อยู่ในช่วงทดลองใช้ จะเห็นคำเตือนก่อนแจกลิงก์หน้าเช็คราคา ที่ ตั้งค่า การ์ด หน้าเช็คราคาซ่อมสาธารณะ จะมีแถบเหลืองเหนือปุ่มบันทึกบอกว่า ตอนนี้เปิดได้เพราะอยู่ในช่วงทดลองใช้ — หน้านี้อยู่ในแพ็คเกจเอ็นเตอร์ไพรส์ ถ้าหมดทดลองแล้วเลือกแพ็คเกจอื่น ลิงก์ที่แจกลูกค้าไปแล้วจะเปิดไม่ได้ทันที · ขึ้น ทั้งตอนสวิตช์เปิดและปิด เพราะต้องรู้ก่อนตัดสินใจ ไม่ใช่รู้ทีหลัง · เป็นการบอก ไม่ใช่การห้าม ปุ่มบันทึกยังกดได้ปกติ · ร้านที่ซื้อแพ็คเกจแล้วไม่เห็นแถบนี้ / ⭐⭐ หน้าเช็คราคาซ่อมสาธารณะย้ายไปอยู่แพ็คเกจ เอ็นเตอร์ไพรส์ ร้านที่แพ็คเกจไม่ถึงจะเห็นการ์ดและตัวเลขของตัวเองตามเดิม แต่สวิตช์กดไม่ได้ พร้อมข้อความบอกว่าอยู่ในแพ็คเกจไหน (จงใจไม่ซ่อนการ์ด เพื่อให้รู้ว่ามีของให้เลือกซื้อ) · ร้านที่อยู่ในช่วงทดลองใช้ได้ครบเหมือนเดิม · 🔴 ถ้าเปิดหน้าไว้ตอนทดลองแล้วซื้อแพ็คเกจต่ำกว่าเอ็นเตอร์ไพรส์ ลิงก์ที่แจกลูกค้าไปแล้วจะเปิดไม่ได้ ให้ชั่งก่อนแจกลิงก์เป็นวงกว้าง / ⭐ Template ราคาซ่อม บอกแล้วว่าแถวไหนไม่โผล่บนหน้าเช็คราคา และเพราะอะไร เดิมทุกแถวขึ้นสถานะ ใช้งาน สีเขียวเหมือนกันหมด แม้แถวนั้นจะไม่แสดงบนหน้าสาธารณะ ⇒ ตอนนี้แถวที่ไม่แสดงจะมีบรรทัดสีเทาใต้ชื่อบอกเหตุผล 4 แบบ แยกกันเพราะแก้คนละทาง: ยังไม่ได้เลือกอาการ (กดแก้ไขแถวนั้น) · อาการที่ผูกไว้ถูกปิดใช้งาน · อาการยังไม่ได้ติ๊กให้แสดง (ไปติ๊กที่ ข้อมูลหลัก → ประเภทการซ่อม) · แถวปิดใช้งานอยู่ · ทุกข้อความบอกด้วยว่า แถวนั้นยังใช้ตอนรับเครื่องได้ตามปกติ ไม่ใช่แถวเสีย ไม่ต้องลบ · โมดัลเตือนตั้งแต่ตอนเลือกอาการ · ร้านที่ยังไม่ได้เปิดสวิตช์หน้าสาธารณะจะเห็นแถบบอกไว้เหนือตาราง / ⭐ ปุ่มคัดลอกลิงก์หน้าราคา + ตัวเลขให้ดูก่อนตัดสินใจเปิด ที่ ตั้งค่า การ์ด "หน้าเช็คราคาซ่อมสาธารณะ" ไม่ต้องพิมพ์ลิงก์เองแล้ว — ระบบแสดงลิงก์เต็มพร้อมปุ่ม "คัดลอกลิงก์" และ "เปิดดูหน้าจริง" · เหนือสวิตช์มีตัวเลข 3 ตัว (แถวราคาที่จะโชว์ · อาการที่มีราคาแล้ว · อาการที่ติ๊กไว้) พร้อมประโยคสรุปว่าตอนนี้หน้าสาธารณะจะโชว์อะไรบ้าง · 🔴 ตัวเลขนับด้วยกติกาเดียวกับที่หน้าสาธารณะใช้จริง เห็นเท่าไรลูกค้าเห็นเท่านั้น (แถวในสาขาที่ปิดใช้งานไม่ถูกนับ) · ไม่บล็อก แต่เตือนก่อน 3 สภาพคนละแบบเพราะแก้คนละทาง: ยังไม่ติ๊กอาการเลย · ติ๊กแล้วแต่ยังไม่มีราคา · สวิตช์ยังปิดอยู่ / ⭐ Google เก็บหน้าราคาเข้าสารบบได้แล้ว ร้านที่เปิดสวิตช์จะถูกใส่ใน sitemap.xml อัตโนมัติ และหน้ามีหัวข้อ/คำอธิบายที่มี ชื่อร้านของคุณ ⇒ แปะเฟซบุ๊ก/ส่งไลน์แล้วขึ้นพรีวิวเป็นชื่อร้าน · ร้านที่ปิดสวิตช์ไม่อยู่ใน sitemap · ⚠️ ต่างจากหน้าติดตามงานซ่อมโดยเจตนา (หน้านั้นกัน Google ไว้เพราะมีข้อมูลลูกค้ารายบุคคล) · ⏳ Google ใช้เวลาหลายวันถึงหลายสัปดาห์ ไม่ใช่เปิดวันนี้ค้นเจอพรุ่งนี้ / ⭐ ลูกค้าติ๊กหลายอาการเห็นยอดรวม + ปุ่มทักไลน์/โทร บนหน้าเช็คราคา เครื่องตกทีเดียวมักพังมากกว่า 1 อย่าง ⇒ แตะช่องราคาเพื่อเลือก ได้หลายอาการ (1 อาการเลือกได้เกรดเดียว ติ๊กเกรดอื่นในอาการเดิม = สลับ) แล้วมี แถบยอดรวมลอยล่างจอ บอกจำนวนรายการ+ยอดรวม · เอาติ๊กออกหมด แถบหายทั้งแถบ · เปลี่ยนยี่ห้อ/รุ่น/สาขา ระบบล้างการติ๊กให้เอง กันยอดค้างของรุ่นเก่า · 🔴 ปุ่มไลน์ขึ้นเฉพาะร้านที่กรอกลิงก์ไลน์ไว้แล้ว — ร้านที่ยังไม่กรอกจะเห็นแค่ปุ่มโทร เป็นสภาพปกติ ไม่ใช่ระบบพัง (ไปกรอกได้ที่ ตั้งค่า → ข้อมูลร้านค้า → ลิงก์ไลน์ของร้าน) · ไม่มีทั้งเบอร์และไลน์ → มีข้อความบอกให้สอบถามที่หน้าร้าน ไม่ใช่พื้นที่ว่าง · ทำไมไลน์เป็นปุ่มหลัก: ลูกค้าส่งรูปเครื่องที่พังให้ร้านดูก่อนได้ แต่โทรศัพท์ทำไม่ได้ ("จอแตก" อาจเป็นกระจกร้าวอย่างเดียวหรือจอในเสียด้วย ซึ่งราคาต่างกันมาก) / ⭐⭐ หน้าเช็คราคาซ่อมของลูกค้า "ใช้ได้จริงแล้ว" — ลิงก์คือ https://<โดเมนของระบบ>/repair-price/<รหัสร้าน> (รหัสร้าน = ชุดตัวอักษรเดียวกับที่เห็นในลิงก์ตอนลูกค้าติดตามงานซ่อม) · ลูกค้าเปิดแล้ว เลือกยี่ห้อ → เลือกรุ่น → เห็นตารางเดียวจบ แถวคืออาการ คอลัมน์คือเกรดอะไหล่ แต่ละช่องบอกราคาและระยะประกัน · พิมพ์ค้นหารุ่นได้ ไม่ว่าร้านจะมีกี่ร้อยรุ่น · ⭐ ไม่ต้องตั้งราคาครบทุกรุ่น รุ่นที่ยังไม่ตั้งจะใช้ราคาเหมาของยี่ห้อให้เอง (รุ่นที่ตั้งเจาะจงชนะเสมอ) · 🔴 ต้องเปิดสวิตช์ + ติ๊กอาการก่อน ไม่งั้นลูกค้าจะเห็นหน้า "ไม่พบหน้าราคาของร้านนี้" ซึ่งเป็นข้อความเดียวกับตอนพิมพ์ลิงก์ผิด · ⚠️ ปุ่มคัดลอกลิงก์ในหน้าตั้งค่ายังไม่มี จะตามมาในรุ่นถัดไป / ⭐ เปิด "หน้าเช็คราคาซ่อม" ให้ลูกค้าดูเองได้แล้ว — แต่ต้องกดเปิดเองก่อน ที่ ตั้งค่า มีการ์ดใหม่ "หน้าเช็คราคาซ่อมสาธารณะ" · 🔴 ค่าตั้งต้นคือปิด และ เห็นเฉพาะเจ้าของร้าน (ถ้าอยากให้ผู้ดูแลเปิดได้ด้วย ไปติ๊กที่ ตั้งค่า → สิทธิ์ตามบทบาท แถว "สิทธิ์เจ้าของร้าน" คอลัมน์ผู้ดูแล) · ⚠️ เปิดสวิตช์อย่างเดียวยังไม่พอ ต้องไปติ๊กด้วยว่าจะโชว์อาการไหนบ้าง ที่ ข้อมูลหลัก → ประเภทการซ่อม คอลัมน์ "โชว์หน้าราคา" — ค่าตั้งต้นคือไม่ติ๊กทุกอาการ ถ้าไม่ติ๊กเลย หน้าที่เปิดจะว่างเปล่า · เหตุผลที่ต้องติ๊กเอง: ชื่ออาการที่ร้านพิมพ์ไว้เองบางอันซ้ำความหมายกัน (เช่นมีทั้ง "เปลี่ยนจอ" และ "เปลี่ยนหน้าจอ") ระบบจะไม่ไปรวมให้เอง ร้านเลือกเองว่าอันไหนเหมาะให้คนนอกเห็น · 🔴 เปิดแล้วใครก็ตามที่มีลิงก์เปิดดูราคาได้ทันที ไม่ต้องล็อกอิน — รวมถึงร้านคู่แข่ง · และมีช่อง "ลิงก์ไลน์ของร้าน (LINE)" เพิ่มที่การ์ดข้อมูลร้านค้า (ผู้ดูแลขึ้นไป) สำหรับปุ่มทักแชทบนหน้านั้น — ต้องขึ้นต้นด้วย https:// เท่านั้น ให้คัดลอกจากแอปไลน์มาวาง / ⭐ ผู้ดูแลแก้ข้อมูลร้านได้แล้ว ถ้าเจ้าของอนุญาต เดิมหน้า ตั้งค่า ส่วน "ข้อมูลร้านค้า" ระดับร้าน (ชื่อร้าน · เบอร์ · ที่อยู่ · โลโก้ · นโยบายกะ · วิธีรับเงินค่าซ่อม) บันทึกได้เฉพาะเจ้าของร้านเท่านั้น ต่อให้ไปติ๊กสิทธิ์ให้ผู้ดูแลแล้วก็ยังกดไม่ผ่าน (เห็นปุ่มแต่กดแล้วขึ้นว่าไม่มีสิทธิ์) · ตอนนี้ระบบดูจาก ตั้งค่า → สิทธิ์ตามบทบาท จริง ๆ แล้ว ⇒ ติ๊ก "สิทธิ์เจ้าของร้าน" ให้ผู้ดูแล เขาจะบันทึกได้ทันที · ⚠️ ร้านที่ไม่เคยเข้าไปแก้หน้าสิทธิ์ จะไม่รู้สึกถึงความเปลี่ยนแปลงใด ๆ (ค่าตั้งต้นเหมือนเดิมทุกอย่าง) · และการ ถอน สิทธิ์ก็มีผลจริงเช่นกัน / 🔧 แก้บั๊ก: กราฟรายได้รายเดือนของแผงผู้ดูแลระบบ นับเดือนตามเวลาสากล ไม่ใช่เวลาไทย รายการที่เกิดวันที่ 1 ของเดือน ช่วง 00:00–06:59 น. จะถูกนับเข้าเดือนก่อนหน้า · แก้แล้วทั้ง 4 กราฟ (รายได้ · การเติบโต · ARPU · ยกเลิก) · ตัวเลขที่แสดงอยู่ตอนนี้ไม่เปลี่ยน เพราะยังไม่มีรายการไหนตกอยู่ในช่วงเวลานั้น / ⭐ ตั้งราคาซ่อมแยกตามเกรดอะไหล่ได้แล้ว ที่หน้า ข้อมูลหลัก → Template ราคาซ่อม มีช่อง "เกรดอะไหล่" เพิ่มมา เลือกได้ 4 ระดับ: แท้ศูนย์ · แท้ถอด / รีเฟอร์ · เทียบเกรดพรีเมียม · เทียบเกรดประหยัด ⇒ ตั้งราคาของรุ่นและอาการเดียวกันได้หลายแถว แยกตามเกรด เช่น iPhone 14 Pro เปลี่ยนจอ · แท้ศูนย์ · ฿9,000 · ประกัน 90 วัน กับ เทียบเกรดพรีเมียม · ฿4,500 · ประกัน 30 วัน เพื่ออธิบายให้ลูกค้าเข้าใจว่าทำไมราคาถึงต่างกัน · ช่องนี้ไม่บังคับ เว้นว่างไว้ก็ได้ ถ้าร้านคิดราคาเดียว และ แถวที่ตั้งไว้เดิมทุกแถวยังใช้งานได้เหมือนเดิมทุกประการ (จะขึ้นเป็น "-" ในคอลัมน์เกรด) · เกรดแสดงเป็นชิปสีทั้งบนตารางและบนการ์ดมือถือ / 🔧 แก้บั๊ก: แก้ราคาใน Template ราคาซ่อมแล้วไม่บันทึก เดิมถ้าเข้าไปกดแก้ไข template แล้วเปลี่ยน ค่าแรง · ค่าอะไหล่ · ยี่ห้อ · รุ่น · ระยะประกัน · เวลาที่ใช้ · อาการตั้งต้น ระบบจะขึ้นว่า "สำเร็จ" แต่ค่าไม่ได้ถูกบันทึกจริง — มีแต่ ชื่อ กับ สถานะเปิด/ปิด เท่านั้นที่บันทึกได้ ⇒ ร้านที่เคยตั้งราคาไว้แล้วอยากปรับราคา ทำไม่ได้เลยและไม่มีอะไรเตือน · ตอนนี้แก้แล้ว ทุกช่องบันทึกจริง ⚠️ ถ้าเคยพยายามแก้ราคาแล้วเหมือนไม่เปลี่ยน — ให้เข้าไปแก้ใหม่อีกครั้ง เพราะค่าเดิมยังเป็นค่าก่อนหน้าอยู่ / ⭐ สาขาที่ปิดใช้งานไว้ เปิดกลับมาใช้งานได้แล้ว เดิมถ้ากดลบสาขาแล้วระบบบอกว่าลบถาวรไม่ได้ (เพราะมีข้อมูลอ้างอิงอยู่) มันจะ ปิดใช้งานให้แทน แล้ว ไม่มีทางเปิดกลับเลยจากหน้าจอ · ตอนนี้แถวของสาขาที่ขึ้นป้าย "ปิดใช้งาน" จะมี ปุ่มไอคอนสีเขียว เพิ่มมา กดแล้วยืนยันเพื่อเปิดใช้งานอีกครั้งได้ทันที ข้อมูลเดิมของสาขายังอยู่ครบ (ชื่อ · ที่อยู่ · เบอร์ · ค่าภาษี) · มีทั้งบนตารางและบนการ์ดมือถือ · ⚠️ ของที่ค้างอยู่ในสาขาที่ปิด ยังโอนออกไม่ได้จากหน้าโอนสินค้า เพราะช่องเลือกสาขาแสดงเฉพาะสาขาที่เปิดอยู่ — ถ้าต้องการย้ายของออก ให้เปิดสาขากลับมาก่อน / ⭐ ปุ่ม "ชวนเพื่อน" อยู่บนแถบด้านบนทุกหน้าแล้ว ไม่ต้องเข้าไปหาในหน้าค่าบริการอีก — ปุ่ม 🎁 "ชวนเพื่อน · รับฟรี 30 วัน" อยู่มุมซ้ายบนติดกับชื่อร้าน กดแล้วจะเปิดกล่องเล็ก ๆ ที่มี ลิงก์ชวนเพื่อนพร้อมปุ่มคัดลอก ส่งต่อได้ทันที · และมี การ์ด "ชวนร้านอื่นมาใช้" เต็มรูปแบบที่หน้า ตั้งค่า ด้วย (ดูสถิติ ประวัติวันฟรีที่ได้ และโควตาที่เหลือ) · ⚠️ เห็นเฉพาะเจ้าของร้านและแอดมิน และ ซ่อนบนมือถือ เพราะแถบด้านบนแคบ — บนมือถือให้เข้าที่หน้า ตั้งค่า แทน / ⭐ ร้านที่กำลังทดลองใช้ ซื้อแพ็คเกจที่ทดลองอยู่ได้แล้ว เดิมถ้าคุณกำลังทดลองใช้แพ็คเกจไหนอยู่ การ์ดแพ็คเกจนั้นจะถูกล็อกกดไม่ได้ และปุ่ม "ดำเนินการชำระเงิน" เป็นสีเทา ⇒ อยากจ่ายเงินซื้อตัวที่ทดลองอยู่ก็ทำไม่ได้เลย ต้องรอให้หมดทดลองก่อน · ตอนนี้การ์ดขึ้นป้าย "กำลังทดลองใช้" และ กดเลือกได้ตามปกติ ทั้งรอบรายเดือนและรายปี · ระบบจะเก็บ เต็มราคา ไม่หักส่วนลดใด ๆ (เพราะช่วงทดลองยังไม่เคยจ่ายมาก่อน) และ นับวันต่อจากวันหมดทดลอง ⇒ ไม่เสียวันที่เหลือไปฟรี ๆ / ⭐ ชวนร้านอื่นมาใช้ แล้วได้วันใช้งานฟรีทั้งคู่ ที่หน้า ค่าบริการ ท้ายหน้ามีการ์ด "ชวนร้านอื่นมาใช้" — คัดลอกรหัสหรือลิงก์ชวนเพื่อนไปส่งให้ร้านอื่นได้เลย · ร้านที่ถูกชวนกรอกรหัสตอนสมัคร (หรือเปิดจากลิงก์แล้วระบบเติมให้เอง) · เมื่อร้านใหม่ชำระค่าบริการครั้งแรก คุณได้ +30 วัน และเขาได้ +15 วัน ต่อจากวันหมดอายุเดิม · ชวนได้สูงสุด 5 ร้านต่อปี · ⚠️ รหัสจะเปิดให้หลังร้านของคุณชำระค่าบริการครั้งแรกแล้วเท่านั้น — ร้านที่ยังอยู่ในช่วงทดลองใช้จะยังไม่มีรหัส · เฉพาะเจ้าของร้าน/แอดมินเท่านั้นที่เห็นส่วนนี้ · ระบบ ไม่เปิดเผยชื่อหรืออีเมลของร้านที่คุณชวน ให้เห็นแค่จำนวนครั้งและวันที่ได้รับรางวัล / ⚠️ ใบเสร็จที่ถูกยกเลิก จะดาวน์โหลดไม่ได้ ปุ่มจะเป็นสีเทาพร้อมบอกเหตุผล — เพราะใบที่ยกเลิกคือใบที่ยังไม่เคยรับเงิน การให้ดาวน์โหลดเป็น "ใบเสร็จรับเงิน" จึงเป็นเอกสารที่บอกความเท็จ · ถ้าต้องการใบใหม่ให้ติดต่อทีมงาน · ใบที่รอชำระยังดาวน์โหลดดูรายละเอียดได้ตามเดิม / ⭐ จ่ายค่าบริการแล้วได้ใบเสร็จทางอีเมลอัตโนมัติ เมื่อทีมงานอนุมัติการชำระเงิน ระบบจะออกใบเสร็จรับเงินให้เองทันที และแนบไฟล์ PDF ไปกับอีเมล "ชำระเงินสำเร็จ" — เดิมอีเมลมีแค่ตารางสรุป 4 บรรทัด ไม่มีใบเสร็จแนบ และร้านต้องรบกวนทีมงานทุกครั้งที่อยากได้ใบไปลงบัญชี · ทำงานเหมือนกันทุกช่องทางการชำระเงิน / ⭐ ดาวน์โหลดใบเสร็จค่าบริการเองได้แล้ว ที่หน้า ค่าบริการ มีส่วน "ใบเสร็จรับเงิน" เพิ่มมา — กดปุ่มดาวน์โหลดได้ไฟล์ PDF ทันที โหลดซ้ำกี่ครั้งก็ได้ ไม่ต้องแจ้งทีมงาน · เดิมระบบออกใบเสร็จให้อยู่แล้วแต่ไม่มีทางเข้าจากหน้าจอเลย ⇒ ร้านที่ต้องเอาไปลงบัญชีต้องรบกวนทีมงานทุกครั้ง · ⚠️ ใบเสร็จจะขึ้นหลังทีมงานอนุมัติการชำระเงินแล้ว / ⭐ หน้าแพ็คเกจ/ค่าบริการ — ถ้าโหลดข้อมูลไม่สำเร็จ จะบอกตรง ๆ พร้อมปุ่ม "ลองใหม่" เดิมหน้าเลือกแพ็คเกจอาจขึ้นมาไม่มีแพ็คเกจให้เลือกสักใบ โดยไม่มีข้อความอธิบายและไม่มีปุ่มให้กด · และหน้าค่าบริการอาจโชว์ "— ฿0/เดือน · รอดำเนินการ" หรือ "ยังไม่มีประวัติการชำระเงิน" ทั้งที่ความจริงคือดึงข้อมูลไม่สำเร็จ ⇒ ร้านที่เพิ่งโอนเงินอาจเข้าใจว่าเงินหายแล้วโอนซ้ำ · ตอนนี้ทั้ง 2 หน้าจะขึ้นแถบแดงค้างไว้ บอกว่าดึงส่วนไหนไม่ได้ พร้อมปุ่ม "ลองใหม่" และ "แจ้งทีมงาน" · แยกให้ชัดระหว่าง "โหลดไม่สำเร็จ" กับ "ไม่มีข้อมูลจริง ๆ" เพราะ 2 อย่างนี้แก้คนละทาง — กรณีหลังจะไม่มีปุ่มลองใหม่ เพราะกดแล้วไม่ช่วย · ถ้าโหลดสำเร็จตามปกติ หน้าจอเหมือนเดิมทุกจุด / 🔴 ต่ออายุ/เปลี่ยนแพ็คเกจ — ได้วันตรงกับที่หน้าจอบอกแล้วทุกเส้นทาง เดิมซื้อรายปีแล้วได้แค่ 1 เดือน และเปลี่ยนไปแพ็คเกจสูงกว่าแล้วไม่ได้วันเพิ่มเลย (วัดจริง: จ่าย ฿24,990 ได้ 4 วัน) — แก้ครบแล้ว · วันหมดอายุใหม่ = วันที่ระบุบนใบชำระ ไม่ใช่นับจากวันโอน / ⭐ แถบเตือนใกล้หมดอายุขึ้นทุกหน้าเมื่อเหลือ ≤ 7 วัน เหลือง 4–7 วัน · ส้ม 1–3 วัน · แดงและปิดไม่ได้เมื่อวันสุดท้าย/หมดแล้ว · เดิมไม่มีอะไรบอกเลย ร้านรู้ตัวตอนกดบันทึกไม่ได้ / ⭐ กดต่ออายุซ้ำไม่เกิดใบซ้ำ เดิมกด 5 ครั้ง = 5 ใบ · ตอนนี้บอกว่าติดใบไหนพร้อมทางออก / ⭐ ใบที่ยกเลิกเองแล้วปลุกกลับมาไม่ได้ (แนบสลิป/จ่ายบัตร/สร้าง QR ไม่ได้) / ⭐ สลิปที่ถูกปฏิเสธ ส่งใหม่แล้วแพ็คเกจสลับจริง เดิมอนุมัติผ่านแต่แพ็คเกจไม่เปลี่ยน / 🔴 ต่ออายุ/เปลี่ยนแพ็คเกจ/ยกเลิกใบชำระ เป็นสิทธิ์เจ้าของร้าน–ผู้ดูแลเท่านั้น (การแนบสลิปยังทำได้ทุกบทบาทโดยเจตนา ไม่งั้นร้านที่หมดอายุจ่ายเงินไม่ได้) / 🔴 ไฟล์ Excel ที่ส่งออก — ได้ครบทุกแถวของช่วงที่เลือกแล้ว เดิมรายงานยอดขาย ตัดที่ 200 แถวตายตัว และรายงานซ่อม/รับซื้อ/สต๊อก ตัดที่ 100 แถว ⇒ ร้านที่มีบิลเยอะกว่านั้นได้ไฟล์ไม่ครบ โดยหน้าจอขึ้นว่าสำเร็จ (วัดจริง: ร้านหนึ่งมี 523 บิลในเดือนเดียว แต่ไฟล์มีข้อมูล 200 แถว = 38%) · ตอนนี้ระบบดึงต่อจนครบทุกแถวเอง ไม่ต้องกดทีละหน้า · ไฟล์ใหญ่ขึ้นจึงใช้เวลาสร้างนานขึ้นเล็กน้อย ปุ่มจะหมุนรอ / ⭐ ถ้าไฟล์ยังไม่ครบด้วยเหตุใดก็ตาม ข้อความแจ้งจะเป็นสีส้มและค้างไว้ให้อ่าน (เดิมขึ้นเขียวว่า "N รายการ" เหมือนสำเร็จปกติ) — ให้ดูแถวคำเตือนสีแดงท้ายตารางในไฟล์ ว่าขาดไปกี่รายการ ก่อนนำตัวเลขไปทำบัญชีหรือยื่นภาษี / ⭐ ใบสั่งซื้ออะไหล่ที่ส่งคำสั่งไปแล้ว (SENT) กด "ยกเลิกใบสั่งซื้อ" ได้แล้ว — เดิมเหลือปุ่ม "รับเข้าอะไหล่" ปุ่มเดียว ร้านที่กดผิดหรือรายการยังไม่ครบ แก้เองไม่ได้เลย · การยกเลิก ไม่แตะสต๊อก / ⭐ ปุ่ม "รับเข้าอะไหล่" และ "ยกเลิกใบสั่งซื้อ" ต้องยืนยันก่อนทุกครั้ง เดิมกดปุ๊บทำงานปั๊บ — กดพลาดครั้งเดียวสต๊อกเพิ่มทันทีและ ยกเลิกไม่ได้อีก · กล่องยืนยันลิสต์ของที่จะเข้าคลังพร้อมจำนวนให้ดูก่อน ดู §5.4B.3 / 🔴 ไฟล์ Excel ที่โหลดไป — ช่องเงินเป็น ตัวเลขจริง แล้ว กด SUM() ได้ เดิมทุกช่องเงินถูกเขียนเป็น ข้อความ ⇒ รวมทั้งคอลัมน์ในโปรแกรมบัญชี ได้ 0 มาตลอดโดยไม่มีอะไรฟ้อง · และ หัวคอลัมน์ VAT บอกอัตราจริงของร้าน (ร้านที่ตั้ง 3% เคยได้ไฟล์ที่เขียน VAT 7% ไปยื่นสรรพากร) · ช่องที่ไม่ทราบค่าเว้นว่าง ไม่ใช่ 0 · ไฟล์ที่ข้อมูลถูกตัดมี แถวคำเตือนอยู่ในไฟล์ ไม่ตัดเงียบ · ตอนนี้ไฟล์สร้างที่เซิร์ฟเวอร์ จึงใช้เวลาสักครู่และปุ่มจะหมุนรอ · ปุ่มส่งออกของหน้าผลนับสต๊อกกลับมาใช้ได้แล้ว (เดิมส่งพารามิเตอร์ผิดชื่อ) / ⭐ กราฟยอดขายรายเดือนบนหน้า ภ.พ.30 หักเงินคืนแล้ว — เดิมสูงกว่ายอดสรุปบนจอเดียวกันเท่ายอดคืนเงินทั้งงวด ⇒ แจ้งภาษีขายเกิน ร้านเสียเงินเอง / ⭐ ภ.พ.30 — เงินคืนโผล่ในตารางแล้ว (แถว "ใบลดหนี้") เดิมการ์ดสรุปหักเงินคืนให้แล้ว แต่ตารางไม่มีแถวเงินคืนเลย ⇒ ร้านที่รวมคอลัมน์เองหรือรวมจากไฟล์ Excel จะได้ ภาษีขายสูงกว่าจริงเท่ายอดเงินคืนของเดือนนั้น · ตอนนี้มีแถว ใบลดหนี้ ยอดและ VAT ติดลบ ลงวันที่ วันคืนเงินจริง อ้างเลข CN-… + บิลเดิม + เหตุผล (ม.86/10) · 🔴 ตัวเลขบนการ์ดสรุปไม่ขยับสักช่อง ดู §11A.4 / ⭐ การส่งออก Excel ถูกบันทึกใน "บันทึกกิจกรรม" แล้ว — เดิมโหลดไฟล์ข้อมูลลูกค้า/ยอดขายออกไป ไม่มีร่องรอยที่ไหนเลย · 🔴 แต่บันทึกนี้บอกได้แค่ "ใครกดปุ่มบนจอ" ไม่ได้บอกว่า "ข้อมูลออกจากระบบทางไหนบ้าง" ดู §14.5 / 🔒 ส่วน "ต้นทุน/กำไร รายชิ้น" และปุ่ม Excel ของหน้า "ยอดรับเงินวันนี้" ย้ายไปอยู่แพ็คเกจ Professional ขึ้นไป — ร้าน Starter เห็นปุ่มเป็นสีเทาพร้อมป้าย (PRO+) ปุ่มยังอยู่ที่เดิมไม่ได้ถูกซ่อน · 🔴 ตัวเลขปิดร้านและ "ต้นทุนรวม / กำไรขั้นต้น" ของทั้งวัน ไม่ถูกจำกัด ทุกแพ็คเกจเห็นเหมือนเดิมทุกช่อง · ช่วงทดลองใช้เปิดครบทุกฟีเจอร์ตามเดิม ดู §14 / ⭐ หน้า "ยอดรับเงินวันนี้" กดที่บิลดู ต้นทุนและกำไรรายชิ้น ได้แล้ว — ต่อจากรอบที่ใส่ต้นทุนรวมไป ร้านถามต่อว่า "แยกเป็นรายการได้มั้ยครับ ให้รู้ว่าแต่ละชิ้นที่ขายไป ต้นทุนเท่าไหร่" · กดลูกศรหน้าแถวบิลแล้วเห็น ราคาขาย · ต้นทุน · กำไร ของแต่ละชิ้น · งานซ่อมแยกอะไหล่ออกจากค่าแรงคนละบรรทัด · มีปุ่ม "กางทั้งหมด" และปุ่ม Excel โหลดไฟล์รายชิ้นไปทำบัญชีต่อ · บนมือถือเป็นปุ่ม "ดูต้นทุนรายชิ้น" ในการ์ดแต่ละใบ · 🔴 หน้าจอแยก "ต้นทุน ฿0.00" (ร้านยังไม่กรอก) ออกจาก "ไม่ทราบต้นทุน" (ระบบไม่มีให้เลย) — อย่างหลังจะถูกนับเป็นกำไรเต็มจำนวน ⇒ กำไรจริงต่ำกว่าที่แสดง และระบบขึ้นแถบเตือนบอกไว้ · ⚠️ บิลที่รับเครื่องเก่าแลก ผลรวมรายชิ้นจะไม่เท่ายอดบิล เพราะยอดบิลคือเงินที่รับจริง ส่วนรายชิ้นคือราคาขาย — มีบรรทัดอธิบายส่วนต่างให้แล้ว ดู §6.11 / ⭐ หน้า "ยอดรับเงินวันนี้" แสดง ต้นทุน และ กำไรขั้นต้น แล้ว — ร้านแจ้งว่าเวลาสรุปยอด ไม่มีต้นทุนโชว์เลย ทั้งฝั่งยอดขายและหน้ายอดรับเงิน · ตอนนี้มี ต้นทุนสินค้า และ ต้นทุนงานซ่อม แยกก้อนกัน พร้อม กำไรขั้นต้น และ อัตรากำไร ของวันนั้น · 🔴 ตัวเลขคิดจากฐานเดียวกับยอดรับเงิน คือ "วันที่รับเงินจริง" ไม่ใช่วันที่ปิดงาน ⇒ งานซ่อมที่ปิดเมื่อวานแต่มาเก็บเงินวันนี้ ต้นทุนจะมาอยู่วันนี้ให้ตรงกับเงินที่รับ · ⚠️ ระบบจะขึ้น หมายเหตุใต้ตัวเลข เมื่อมีรายการที่ต้นทุนไม่แน่นอน เช่น "ต้นทุนอุปกรณ์เสริม N รายการ ใช้ราคาต้นทุนล่าสุดของสินค้า ไม่ใช่ต้นทุน ณ วันที่ขาย" หรือ "อะไหล่ N รายการ ไม่มีต้นทุนจากคลัง ระบบใช้ราคาที่คิดลูกค้าแทน" ⇒ อ่านหมายเหตุก่อนเอากำไรไปตัดสินใจ เพราะบางรายการระบบไม่มีต้นทุนจริงให้หัก · และ คอลัมน์ "เลขที่" กว้างขึ้น ไม่ตกบรรทัดอีกแล้ว ดู §14 / ⭐ หน้าคลังสินค้าแสดง "ซื้อจาก" และกรองได้แล้ว — เดิมช่อง "ซื้อจาก" มีเฉพาะตอน เพิ่ม/แก้ไขสินค้า แต่ในรายการมองไม่เห็นเลย ว่าเครื่องไหนซื้อมาจากใคร · ตอนนี้มี คอลัมน์ "ซื้อจาก" ในตาราง (พร้อมเบอร์โทรใต้ชื่อ) และ บรรทัด "ซื้อจาก" บนการ์ดมือถือ · แยกด้วยสีให้เห็นชัด: ร้านส่ง = ฟ้า · ลูกค้าที่เอามาขาย = ม่วง · ยังไม่ระบุ = เทา · และมี ตัวกรอง "ซื้อจาก" ให้เลือกได้ทั้งแบบกว้าง (ระบุแล้ว / ร้านส่ง / ลูกค้า / ยังไม่ระบุ) และ เจาะจงรายชื่อ — พิมพ์ค้นหาได้ ระบบค้นจากเซิร์ฟเวอร์จึงเจอครบแม้ร้านมีผู้จัดหาหรือลูกค้าหลายร้อยราย · เลือกแล้วมีแถบบอกว่ากำลังกรองใครอยู่ + ปุ่มล้าง ดู §3.1 / ⭐ ตัวเลขในหน้า "ผู้จัดหา (Suppliers)" กดดูรายละเอียดได้แล้ว — เดิมหน้านั้นบอกว่าผู้จัดหา "ผูกกับอะไหล่ มือถือ และอุปกรณ์เสริม" แต่เห็นได้แค่ จำนวน กดอะไรไม่ได้เลย (ร้านถามเข้ามาว่าต้องไปดูเมนูไหน) · ตอนนี้แตะที่ป้ายจำนวนได้เลย: อะไหล่ → พาไปหน้า คลังอะไหล่ ที่กรองเฉพาะร้านส่งรายนั้น · มือถือ / อุปกรณ์เสริม → พาไปหน้า ประวัติการซื้อเข้า ซึ่งมี ยี่ห้อ-รุ่น · IMEI · ต้นทุน · วันที่ · สาขา ครบ · หน้าปลายทางมี ทางกลับไปหน้าผู้จัดหา อยู่มุมบน (ไม่ต้องกด back ของเบราว์เซอร์) พร้อมแถบบอกว่ากำลังกรองร้านส่งรายไหน จำนวนเท่าไร และปุ่มล้างตัวกรอง · การ์ดบนมือถือแสดงจำนวนของที่ซื้อได้แล้ว — เดิมไม่แสดงเลยแม้แต่ตัวเลข · ถ้ารหัสผู้จัดหาผิดหรือถูกลบไปแล้ว จะขึ้นแถบสีส้มบอกตรง ๆ ไม่ใช่หน้าว่างเปล่า ดู §5.4B / ⭐ หน้า "ออกเอกสาร" ดูงานซ่อมย้อนหลังได้ครบทุกหน้าแล้ว — เดิมเปิดมาเห็นได้ แค่ 50 งานล่าสุดเท่านั้น งานที่เก่ากว่านั้นหาไม่เจอเลยถ้าจำชื่อลูกค้าหรือเบอร์ไม่ได้ และไม่มีอะไรบอกว่ายังมีงานเหลืออีก · ตอนนี้มีปุ่มเลขหน้าใต้ตาราง เลือก 10/25/50/100 ต่อหน้า ได้ และตัวเลขบอก จำนวนงานทั้งหมดจริง ๆ (เช่น "1–50 / 389") · เปลี่ยนคำค้น/สถานะ/สาขา แล้วเด้งกลับหน้า 1 ให้เอง · หน้าแรกที่เห็นตอนเปิดยังเหมือนเดิมทุกประการ ดู §5.6 / ⭐ ใบที่กดออกไม่สำเร็จ เลิกกินเลขที่เอกสารแล้ว — เดิมถ้ากดออก ใบเสร็จรับเงิน ให้งานที่ยังไม่ได้ลงค่าแรง/อะไหล่ ระบบจะปฏิเสธก็จริง แต่เลขที่เอกสารเดินไปแล้ว 1 เลข ⇒ เลขที่ใบเสร็จขาดหายเป็นช่วง ๆ ซึ่งเป็นปัญหาตอนตรวจบัญชี · ตอนนี้ใบที่ถูกปฏิเสธ ไม่กินเลขอีกแล้ว · และกดปุ่มออกใบรัว ๆ หรือกดพร้อมกัน 2 เครื่อง จะได้ ใบเดียว พร้อมข้อความไทยบอกว่าออกไปแล้ว แทนที่จะได้ใบซ้ำหรือข้อความ "เกิดข้อผิดพลาดภายในระบบ" · ใบที่ออกไปแล้วและเลขเดิม ไม่ถูกแตะเลย ดู §5.6 / ⭐ ให้ลูกค้าเซ็นรับทราบผลตรวจเช็คเครื่องบนหน้าจอได้แล้ว — ร้านแจ้งว่าช่างเทสต์เครื่องแล้วแจ้งลูกค้า แต่ไม่มีการลงชื่อของลูกค้าว่ารับทราบผลก่อน/หลังซ่อม · ตอนนี้ในหน้าต่าง "เปรียบเทียบก่อน/หลังซ่อม" มีช่องให้ ช่างและลูกค้าเซ็นบนจอ (ใช้นิ้วเซ็นบนแท็บเล็ตได้ ไม่ต้องพิมพ์กระดาษเพิ่ม) · กดบันทึกแล้ว ลายเซ็นถูกล็อกเป็นหลักฐาน แก้ไม่ได้ และได้เลขที่เอกสาร · มีปุ่ม "ดาวน์โหลด PDF" ที่มีลายเซ็นทั้ง 2 ฝ่ายอยู่บนกระดาษ ส่งให้ลูกค้าได้เลย · ถ้ามีคนแก้ผลเช็คทีหลัง จอจะยังแสดงฉบับที่ลูกค้าเซ็นรับ พร้อมแถบเตือน · เซ็นผิดยกเลิกได้ (เจ้าของร้าน/ผู้ดูแล + ต้องใส่เหตุผล) ดู §5.5 / ⭐ หน้า "บันทึกการตรวจสอบ" ดูย้อนหลังได้ครบทุกหน้าแล้ว — เดิมเปิดมาเห็นได้ แค่ 25 รายการล่าสุดเท่านั้น ปุ่มเลขหน้ากดแล้วไม่มีอะไรเกิดขึ้น และช่อง "ต่อหน้า" ตั้งเป็น 100 ก็ยังได้ 25 เท่าเดิม (ร้านแจ้งเข้ามา) · ตอนนี้กดเลขหน้าได้จริง เลือก 10/25/50/100 ต่อหน้าได้ และตัวเลขท้ายตารางบอกจำนวนทั้งหมดจริง ๆ · เปลี่ยนตัวกรองแล้วเด้งกลับหน้า 1 ให้เอง ดู §14.5 / ⭐ ร้านเปิดสิทธิ์ "ใบแจ้งหนี้ B2B" ให้ผู้จัดการเองได้แล้ว — งานเอกสาร (ดู/สร้าง/แก้/ออกใบ/ดาวน์โหลด PDF) เปิดให้ได้ แต่ งานเงิน (รับชำระ · คืนเงิน · ลบใบ) ยังเป็นเจ้าของร้าน/ผู้ดูแลเท่านั้น · ร้านที่ไม่ได้เข้าไปติ๊ก ไม่มีอะไรเปลี่ยน ดู §14.2 / ⭐ รอบนับสต๊อกเลิกลากรายการที่ปิดการนับสต๊อกเข้ามาแล้ว — เดิมเปิดรอบนับแล้วใบนับ มีของที่ร้านตั้งไว้ว่า "ไม่ต้องนับ" ปนมาด้วย พนักงานเดินนับแล้วกรอกเลขลงไป แต่ระบบข้ามทิ้งตอนกดปิดรอบโดยไม่บอกอะไร = เสียแรงฟรี ดู §3.3 / ⭐ เพิ่มลูกค้าใหม่ได้จากช่อง "ซื้อจาก" เลย — คนที่เอาเครื่องมาขายครั้งแรกยังไม่มีในระบบ เดิมต้องออกจากฟอร์มไปหน้าลูกค้าแล้วของที่กรอกค้างไว้หาย ตอนนี้กรอกชื่อ+เบอร์ตรงนั้นได้เลย ดู §3.1 / §3.2 / ⭐ เมนู "ผู้จัดหา (Suppliers)" เปิดถึงระดับผู้จัดการแล้ว — เท่ากับหน้า "ข้อมูลหลัก" และเลิกผูกกับสิทธิ์งานซ่อม เพราะผู้จัดหาใช้กับมือถือ/อุปกรณ์เสริมด้วยแล้ว ดู §5.4B / ⭐ บันทึกได้แล้วว่าซื้อมือถือ/อุปกรณ์เสริมชิ้นนี้มาจากใคร — ตอนเพิ่ม/แก้ไขสินค้าที่หน้าสต็อกมือถือและอุปกรณ์เสริม มีช่อง "ซื้อจาก" ให้เลือกเป็นชิป ไม่ระบุ / ผู้จัดหา (ร้านส่ง) / ลูกค้า (รับซื้อต่อจากลูกค้าโดยตรง) — เลือกได้อย่างมากทีละอย่าง และเพิ่มผู้จัดหาใหม่จากในช่องนี้ได้เลยไม่ต้องออกไปหน้าอื่น (ฝั่งลูกค้าเลือกจากรายชื่อที่มีอยู่แล้วในระบบ) · ดูย้อนหลังทั้งหมดได้ที่เมนูใหม่ "ประวัติการซื้อเข้า" ในแถบเมนูซ้าย ดู §3.1 / §3.2 / §5.4B.4 ⚠️ เก็บนับจากวันที่เปิดใช้ฟีเจอร์นี้เป็นต้นไปเท่านั้น สินค้าเก่าที่มีอยู่แล้วในระบบไม่มีข้อมูลผู้ขายให้ย้อนดู (ไม่ได้ backfill ย้อนหลังให้) / ⭐ ดาวน์โหลดใบแจ้งหนี้เป็นไฟล์ PDF ส่งให้ลูกค้าได้แล้ว — เดิมออกใบแล้วส่งให้ลูกค้าจากในระบบไม่ได้เลย ตอนนี้เปิดใบแล้วกด "ดาวน์โหลด PDF" ได้ไฟล์ที่แนบอีเมล/LINE หรือพิมพ์ได้ทันที · ใบที่ยกเลิกแล้วจะมีแถบบอกบนกระดาษว่าใช้เรียกเก็บเงินไม่ได้ · ร้านที่ไม่ได้จด VAT จะไม่มีบรรทัดภาษีบนเอกสาร ดู §6.9 / ⭐ ใบแจ้งหนี้เลือกได้เฉพาะเครื่องของสาขาที่ออกใบ — เดิมช่องค้นหามือถือในหน้าออกใบแสดงเครื่องของทุกสาขา พอออกใบแล้วเครื่องถูกตัดออกจากคลัง ของสาขาอื่น ทำให้มูลค่าสต๊อกสาขานั้นลดโดยไม่มีอะไรบอก · ตอนนี้เห็นเฉพาะเครื่องของสาขาที่เลือกอยู่ และถ้าเผลอใส่เครื่องข้ามสาขา ระบบจะบอกว่าต้องโอนเครื่องมาก่อน ดู §6.9 / ⭐ ปุ่มลัด "บันทึกเงินเข้าลิ้นชัก" กดซ้ำแล้วไม่บันทึกซ้ำ — เงินก้อนเดียวบันทึกเข้าลิ้นชักได้ครั้งเดียวเท่านั้น กดซ้ำจะขึ้นว่า "บันทึกไปแล้ว" แทนที่จะเพิ่มยอดอีกรอบ ดู §6.9 / ⭐ นัดวัน–เวลารับเครื่องได้ตั้งแต่ตอนรับซ่อม — แยกเป็น 2 ช่อง: วันนัด + เวลานัด (ช่องเวลาพิมพ์ตัวเลขล้วน 1430 → 14:30 · ใช้ได้ทั้งบนคอมและแท็บเล็ต) หรือแตะชิป วันนี้ / พรุ่งนี้ / +2 / +3 / +7 วัน · ไม่บังคับกรอก · พิมพ์ลงใบรับซ่อมและขึ้นที่หน้าติดตามงานออนไลน์ที่ลูกค้าเปิดดูเอง · เลื่อนนัดได้ตลอด (ใบที่ออกไปแล้วยังพิมพ์วันเดิม โดยตั้งใจ) · เลยนัดมีป้ายส้มเตือนเฉพาะงานที่ยังซ่อมไม่เสร็จ ดู §5.1** / ⭐ พิมพ์ฉลาก Barcode แล้วสแกนได้จริง — เดิมบาร์โค้ดที่พิมพ์ออกมาสแกนไม่ได้ (QR สแกนได้ปกติ) เพราะระบบย่อรูปบาร์โค้ดลงเงียบ ๆ จนแท่งแคบเกินและไม่มีขอบขาวรอบโค้ด · ตอนนี้ระบบคำนวณความกว้างแท่งให้ลงตัวกับหัวพิมพ์ และ ถ้ารหัสยาวเกินฉลากขนาดนั้น จะบอกก่อนพร้อมแนะนำขนาดที่ใช้ได้ แทนที่จะพิมพ์ของที่สแกนไม่ได้ออกมา · มีลิงก์ "พิมพ์แล้วสแกนไม่ได้?" ใต้ปุ่มพิมพ์ ดู §3.2A** / ⭐⭐ ใบแจ้งหนี้ B2B — ออกใบแล้วสต๊อกลดจริง และเงินที่รับเข้ารายงานรายได้/ภาษีแล้ว — เดิมออกใบขายมือถือไปแล้วเครื่องยังขึ้นว่า "พร้อมขาย" และขายซ้ำได้ · อุปกรณ์เสริมไม่ถูกตัดจำนวน · และเงินที่รับไม่โผล่ในรายงานการเงินเลยสักบาท · ตอนนี้ตัดสต๊อกตอนออกใบ · ของไม่พอออกใบไม่ได้ · ยกเลิกแล้วคืนของ (ติ๊กปิดได้) · รายได้เข้ารายงานตามเกณฑ์ของร้าน · VAT นับตอนออกใบเสมอ · เพิ่มยอด ลูกหนี้การค้า ดู §6.9** / ⭐ รายชื่อลูกค้าแสดงทั้งร้าน ไม่แยกสาขาแล้ว — เดิมกรองตามสาขาที่เลือกบนหัวจอ ทำให้ลูกค้าที่บันทึกไว้ที่สาขาอื่นหายจากรายการ (ร้านหนึ่งเห็น 214 จาก 328 คน) และเลือก "ทุกสาขา" แล้วหน้าว่างเปล่า · ยอดซื้อสะสมหักเงินคืนแล้ว ดู §8 / ⭐ รายงานสินค้าคงเหลือ — เลือกดูทีละสาขาได้แล้ว และใบที่พิมพ์ออกมาก็บอกสาขา · ช่องเลือกช่วงวันที่หายไปจากรายงานนี้ โดยตั้งใจ ดู §11.0A / ⭐⭐ ตั้งสิทธิ์ของแต่ละบทบาทได้เองจากหน้าจอแล้ว — ไปที่ ตั้งค่า → "สิทธิ์ตามบทบาท" (เจ้าของร้าน/ผู้ดูแลระบบ) ติ๊กได้ 10 กลุ่มงาน × 6 บทบาท · กดบันทึกแล้วมีหน้าต่างสรุปให้ตรวจก่อน** ว่ากำลังจะ ถอน สิทธิ์ใครบ้าง (กล่องส้ม) และ เพิ่ม ให้ใครบ้าง (กล่องเขียว) · ระบบไม่ยอมให้ตั้งจนล็อกตัวเองออก · ร้านที่ไม่เข้าไปแตะ = สิทธิ์เหมือนเดิมทุกอย่าง ดู §14.2** / 🔒 จำกัด "การสลับสาขา" ได้แล้ว — เดิมทุกบทบาทเปลี่ยนสาขาบนหัวจอได้ พนักงานที่เผลอเลือกสาขาอื่นค้างไว้จะบันทึกงานเข้าสาขานั้นโดยไม่รู้ตัว · ปิดสิทธิ์นี้แล้วเขาจะเห็นป้ายชื่อสาขาพร้อมแม่กุญแจแทนช่องเลือก (ยังรู้ว่าตัวเองอยู่สาขาไหน) และระบบดึงกลับสาขาตั้งต้นให้เอง** ถ้าเคยสลับไปค้างไว้ · ค่าเริ่มต้นยังเป็น "ทุกบทบาทสลับได้" เหมือนเดิม ดู §14.2** / ⭐ เพิ่ม/แก้ผู้ใช้ — คัดลอกสิทธิ์จากพนักงานคนอื่นได้ในคลิกเดียว เลือกชื่อคนที่ทำงานตำแหน่งเดียวกัน ระบบเติมช่อง "บทบาท" ให้ · เห็นก่อนว่าจะได้อะไร · สาขาไม่คัดลอกอัตโนมัติ (มีช่องติ๊กแยก) · คัดลอกบทบาทที่สูงกว่าสิทธิ์ตัวเองไม่ได้ ดู §14.2 / ⭐ หน้า "งานช่าง" — งานที่ช่างรับมาจากสาขาอื่น ไม่หายจากหน้าจออีกแล้ว — เดิมหน้านี้แสดงเฉพาะงานของสาขาที่เลือกอยู่บนหัวจอ ⮕ ช่างที่ไปช่วยอีกสาขาแล้วรับงานกลับมา งานนั้นหายจากหน้าจอเขาทั้งใบ · ตอนนี้แท็บ "งานของฉัน" ครอบทุกสาขาเสมอ และมีป้ายชื่อสาขากำกับทั้งบนการ์ดและในหน้าต่างรายละเอียด จะได้ไม่เดินไปหยิบเครื่องผิดสาขา · ใช้ได้ทันที ไม่ต้องตั้งค่า ดู §5.2 / ⭐ สิทธิ์ของแต่ละบทบาท ปรับให้เข้ากับร้านแต่ละร้านได้แล้ว — เดิมกำหนดตายตัวเหมือนกันทุกร้าน ตอนนี้กำหนดได้ว่าแต่ละบทบาทในร้านคุณเข้าถึงอะไรได้บ้าง (9 กลุ่มงาน) โดยไม่กระทบร้านอื่น · ⭐ ตั้งเองได้จากหน้าจอแล้ว (ตั้งค่า → สิทธิ์ตามบทบาท) · ร้านที่ยังไม่ได้แจ้งปรับ = สิทธิ์เหมือนเดิมทุกอย่าง ไม่มีใครได้หรือเสียสิทธิ์ · ปรับแล้วพนักงานเห็นผลตอนเปิดแอปครั้งถัดไป** ไม่ต้องออกจากระบบแล้วเข้าใหม่ ดู §1.4 และ §14.2** / 🔴 เพิ่ม/แก้ผู้ใช้ — "สาขา" กับ "บทบาท" เป็นช่องบังคับแล้ว เว้นว่างจะกดบันทึกไม่ผ่าน · เดิมเว้นได้ แล้วได้บัญชีที่รายการหายจากทุกหน้าจอที่กรองตามสาขา หรือเข้าระบบได้แต่เปิดเมนูไม่ได้เลยสักเมนู · ร้านที่มีสาขาเดียว ระบบเลือกสาขาให้อัตโนมัติ ไม่ต้องกด · บัญชีเก่าที่ยังไม่มีสาขา พอเปิดแก้ไขจะต้องเลือกสาขาก่อน (ตั้งใจให้เป็นแบบนั้น · บัญชีเดิมยังใช้งานได้ตามปกติ) ดู §14.2 / 🔒 หน้า "กะการขาย" จำกัดบทบาทแล้ว — เข้าได้เฉพาะ เจ้าของร้าน · ผู้ดูแลระบบ · ผู้จัดการ · แคชเชียร์ · พนักงานขาย (รวมช่างขาย) · ช่างซ่อมที่มีบทบาทช่างอย่างเดียวเข้าไม่ได้แล้ว เดิมเมนูซ่อนอยู่ แต่พิมพ์ที่อยู่หน้าเว็บเข้ามาตรง ๆ ยังเปิดกะได้จริง · ครอบทั้งการเปิด-ปิดกะและการบันทึกเงินเข้า-ออกลิ้นชัก ดู §10B (ผลต่อการรับเงินค่าซ่อมที่เคาน์เตอร์ ดู §5.9) / ⭐ เอกสาร A4 ที่พิมพ์ออกมาได้ 2 แผ่น มีลิงก์บอกวิธีแก้แล้ว — กดลิงก์ "พิมพ์แล้วได้ 2 แผ่น?" ที่มุมซ้ายล่างของหน้าต่างตัวอย่างเอกสาร (หน้าเอกสารงานซ่อม และใบเคลมประกัน) · เดิมมีคำแนะนำเฉพาะสลิปความร้อน ส่วนเอกสาร A4 ไม่มีเลยทั้งที่ใบรับซ่อมและใบส่งคืนหลังเคลมเป็น 2 ใบที่ล้นจริง ดู §12.2 / ⭐ สาขาที่สร้างผิดลบออกได้แล้ว — เดิมสาขาที่สร้างผ่านหน้าจอลบถาวรไม่ได้เลยสักสาขา แม้เพิ่งสร้างและยังไม่เคยใช้ กดลบกี่ครั้งก็ได้แค่ "ปิดใช้งาน" แล้วค้างในตารางตลอดไป · ตอนนี้กล่องยืนยันจะบอกล่วงหน้าว่าจะลบถาวรหรือปิดใช้งาน และบอกว่าติดอะไรอยู่ ดู §14.1 / ⏳ บันทึกการใช้งาน (Audit Log) เก็บย้อนหลัง 365 วัน แล้วระบบลบรายการเก่ากว่านั้นให้เองทุกวัน — เดิมไม่เคยลบเลย สะสมจนหน้าช้าลง · ตั้งสั้นกว่า 90 วันไม่ได้ (ขั้นต่ำตามกฎหมาย) · ถ้าต้องใช้ย้อนหลังเกิน 1 ปี ให้ส่งออกเก็บเองก่อนครบกำหนด ดู §14.5 / 🔴 หน้า "เงื่อนไขเอกสาร" เลิกโกหกตอนเลือก "ทุกสาขา" — เดิมจะโชว์ข้อความมาตรฐานของระบบทุกใบ ซึ่งอ่านได้ว่า "ร้านนี้ไม่เคยแก้เงื่อนไขเลย" ทั้งที่แก้ไว้ครบ · และกดบันทึกขึ้นว่า "ไม่พบสาขา" ซึ่งชวนให้คิดว่าสาขาถูกลบ · ตอนนี้บอกตรง ๆ ให้เลือกสาขาก่อน ดู §12.0A / 🔴 เลือก "ทุกสาขา" ค้างไว้แล้วกดพิมพ์เอกสาร จะมีป้ายเตือน — เดิมกระดาษออกเป็นข้อความมาตรฐานเงียบ ๆ ทั้งที่ร้านตั้งเงื่อนไขเองไว้แล้ว · ใบเสร็จขาย/ใบรับซื้อจะอ่านเงื่อนไขจากสาขาของบิลใบนั้นเอง ดู §12.0A / 🔴 ติ๊ก "ใช้ทุกสาขา" ในรายการเช็คสภาพ เลือกได้เฉพาะตอนสร้างใหม่ — เดิมสลับตอนแก้ไขได้ และขึ้นว่าบันทึกสำเร็จ แต่ไม่มีอะไรเปลี่ยนจริงสักอย่าง ดู §5.5 / ⭐ บันทึกการใช้งาน (Audit Log) ครอบคลุมมากขึ้นกว่าเดิมเท่าตัว — เดิมหลายอย่างทำไปแล้วไม่เหลือร่องรอยเลย เช่น จ่ายเงินเดือน · ปรับยอดสต๊อกด้วยมือ · เปลี่ยนสิทธิ์ผู้ใช้ · แก้ VAT · ปิดตารางสำรองข้อมูล · ลบบิลพักที่มียอดเงิน · และตัวกรองในหน้านั้นเลิกโชว์ตัวเลือกที่กดแล้วไม่มีอะไร ดู §14.5 / 🔴 หน้าจอเลิกโกหกเรื่องลบสาขา — เดิมกดลบแล้วขึ้นเขียวว่า "ลบสาขาเรียบร้อย" เสมอ แต่กด F5 แล้วสาขากลับมา · ตอนนี้บอกตรง ๆ ว่าลบถาวรหรือแค่ปิดใช้งาน และบอกว่าติดอะไรอยู่ ดู §14.1 / ⭐ ใบเช็คสภาพที่เช็คครบแล้ว เปิดกลับมาดูได้แล้ว — เดิมปุ่มหายทั้ง 2 ปุ่ม ใบที่บันทึกเสร็จเปิดดูไม่ได้เลย ทั้งที่เป็นหลักฐานที่ต้องหยิบให้ลูกค้าดู ดู §5.5 / ⭐ เลือก "ทุกสาขา" แล้วรายการงานซ่อมและช่องเลือกยี่ห้อ/รุ่น/สถานะไม่ว่างเปล่าอีกแล้ว — เดิมช่องยี่ห้อว่างจนอ่านได้ว่าร้านยังไม่ได้ตั้งค่า ทั้งที่มีข้อมูลอยู่ครบ · ปุ่ม + ข้างช่องเลือกจะกดไม่ได้พร้อมบอกให้เลือกสาขาก่อน แทนที่จะขึ้นว่า "ไม่พบสาขา" / ⭐ ใบส่งคืนหลังเคลมพิมพ์พอดี 1 หน้าแล้ว (เดิม 2 หน้า) / 🔴 แก้บั๊กที่ทำให้เคลมประกันรอบที่ 2 ไม่ได้ — ลูกค้ากลับมาเคลมซ้ำ ร้านออกใบเคลมใบแรกไปแล้ว พอจะออกใบที่สอง ปุ่มเคลมหายไปเลย และค้นหาใบนั้นก็ไม่เจอ ขึ้นว่า "ไม่พบใบประกัน" ซึ่งดูเหมือนพิมพ์เลขผิด · เกิดกับใบที่ไม่ได้ระบุรายการย่อย** ซึ่งเป็นค่าตั้งต้นของฟอร์ม = ใบส่วนใหญ่ · ตอนนี้ตัวตัดสินคือ วันหมดประกัน อย่างเดียว เคลมกี่รอบก็ได้จนกว่าจะหมดอายุ ใบที่ยกเลิกยังเคลมไม่ได้เหมือนเดิม ดู §5.8** / 🔴 ใบส่งคืนหลังเคลมเลิกสัญญาว่าจะ "ขยายระยะประกัน" — เดิมพิมพ์ว่าร้านจะขยายประกันเพิ่มให้ นับจากวันส่งคืนเครื่อง ซึ่งระบบไม่เคยขยายให้จริงเลย** และพิมพ์ใบเดิมซ้ำคนละวันจะได้วันหมดคนละวัน · วันหมดประกันยึดตามใบแรกเสมอ มาเคลมกี่รอบก็หมดวันเดิม ดู §5.8** / ⭐ เช็คหลังซ่อม: รายการที่ก่อนซ่อมเลือก "ไม่เกี่ยวข้อง" ระบบยกมาให้เอง ไม่ต้องไล่กดใหม่ — เช่น "การชาร์จไร้สาย" บนเครื่องที่ไม่มีฟีเจอร์นี้ · "ปกติ"/"ไม่ปกติ" ไม่ยกมา เพราะเป็นผลการทดสอบที่ต้องเช็คใหม่ทุกครั้ง · ใบที่บันทึกไปแล้วเปิดกลับมาแก้จะเห็นค่าเดิม ไม่ถูกทับ ดู §5.5 / ⭐ รหัสปลดล็อกเครื่องแสดงในโมดัลเช็คลิสต์แล้ว — เดิมเวลาเทสต์เครื่องต้องปิดโมดัลไปดูรหัสแล้วกลับมาเปิดใหม่ ซึ่งเสียสิ่งที่กรอกค้างไว้ · ตอนนี้ขึ้นด้านบนของโมดัลทั้งก่อนและหลังซ่อม พร้อมปุ่มคัดลอก · ยังไม่พิมพ์ลงเอกสารใด ๆ เหมือนเดิม ดู §5.5 / ⭐ รายการเช็คขึ้นตามสาขาที่เลือกอยู่จริง — เดิมยึดสาขาที่ผูกกับบัญชีตอนเข้าสู่ระบบ สลับสาขาบนหัวจอแล้วรายการยังเป็นของสาขาเดิม ทั้งการดูและการเพิ่มรายการใหม่ · ร้านสาขาเดียวไม่มีอะไรเปลี่ยน ดู §5.5 / 🔴 แก้บั๊กที่ทำให้ "รับเข้า" ในหน้าโอนสินค้าระหว่างสาขาพังทุกครั้ง — ถ้าสาขาปลายทางมีของ รหัสเดียวกันแต่ชื่อสะกดต่างกัน (เช่น จอ A05S กับ A05S) ระบบจะขึ้น "เกิดข้อผิดพลาดภายในระบบ" และกดกี่ครั้งก็พังเหมือนเดิม แก้เองไม่ได้เลย · ตอนนี้จับคู่ด้วย รหัสสินค้าอย่างเดียว ชื่อไม่ตรงก็รับเข้าได้ จำนวนไปรวมกับรายการเดิม โดยไม่เขียนทับชื่อ/ราคาที่ปลายทางตั้งไว้ และระบบบอกบนจอว่าไปรวมกับรายการชื่ออะไร · ของไม่เคยหาย ทุกครั้งที่พังระบบย้อนรายการกลับครบ ใบยังอยู่สถานะ "กำลังโอน" ดู §3.4 / ⭐ มีช่องใส่รหัสปลดล็อกเครื่องลูกค้าแล้วที่หน้ารับเครื่อง — เดิมไม่มีช่องให้ใส่ ร้านจึงพิมพ์รวมไว้ในช่อง "อาการเสีย" ซึ่งทำให้รหัสไปโผล่บนใบรับซ่อมที่ลูกค้าถือกลับบ้าน ในไฟล์ Excel ที่ export และบนหน้าติดตามงานซ่อมออนไลน์ · ช่องใหม่ เก็บให้ช่างดูบนจอเท่านั้น ไม่พิมพ์ลงเอกสารใด ๆ ใส่ได้ทั้ง PIN รหัสตัวอักษร และรูปแบบลากนิ้ว · ล้างช่องแล้วรหัสถูกลบจริง ดู §5.1 / ⭐ หน้าติดตามงานซ่อมออนไลน์ไม่แสดง "อาการที่แจ้ง" และเบอร์โทรเต็มอีกแล้ว — เพราะใครก็ตามที่รู้เลขใบ (พิมพ์อยู่บนกระดาษและใน QR) แล้วเดา 4 ตัวท้ายเบอร์ได้ จะเห็นทุกอย่างที่ร้านพิมพ์ไว้ในช่องอาการ รวมถึงรหัสปลดล็อกเครื่อง · ลูกค้ายังเห็นสถานะ ราคา และผลวินิจฉัยจากช่างครบเหมือนเดิม ดู §5.7 / ⭐ ช่างคนไหนก็เช็คลิสต์เครื่องได้แล้ว ไม่ต้องเป็นช่างที่ซ่อมเครื่องนั้น — เดิมช่างเปิดหน้าเช็คลิสต์ได้แต่เห็นเฉพาะงานตัวเอง งานของช่างคนอื่นจึงไม่มีให้กดเลย · ถ้ามีคนเช็คไว้แล้วระบบจะเตือนก่อนพร้อมบอกว่าใครเช็คเมื่อไร และทุกการบันทึกทับถูกบันทึกไว้ใน Audit Log ว่าใครทับของใคร · หน้า "งานของฉัน" ยังกรองเหมือนเดิมทุกประการ ดู §5.5 / ⭐ บันทึกเงินเข้า/ออกลิ้นชักแล้วพิมพ์สลิปให้ + ลิ้นชักเปิดออกมาเอง — เปิดสวิตช์ที่หน้าตั้งค่า (แยกรายสาขา ค่าตั้งต้นคือปิด) · ลิ้นชักเสียบอยู่กับเครื่องพิมพ์สลิป ไม่ใช่คอมพิวเตอร์ จึงต้องพิมพ์ถึงจะเปิดได้ และต้องเปิดตัวเลือก Cash drawer ที่ไดรเวอร์เครื่องพิมพ์ 1 ครั้ง · เปิดแล้วลิ้นชักจะเด้งทุกใบที่พิมพ์ออกเครื่องสลิป รวมการพิมพ์ใบเสร็จเก่าซ้ำ ดู §10B.5 / ⭐ ใบประกันงานซ่อมใบเดียวรับประกันหลายรายการที่ระยะไม่เท่ากันได้แล้ว — เช่นเปลี่ยนจอรับประกัน 30 วัน เปลี่ยนแบตเตอรี่รับประกัน 1 ปี ในใบเดียวกัน · เดิมมีช่องระยะเวลาช่องเดียว ร้านต้องใส่ค่าที่ยาวสุดแล้วพิมพ์ที่เหลือลงในช่องความคุ้มครองเอง ซึ่งเป็นแค่ตัวหนังสือ ระบบไม่รู้จัก · กดปุ่ม "เติมจากรายการอะไหล่" ดึงชื่อมาให้แล้วใส่แค่จำนวนวัน · ไม่ใส่รายการเลย = ใบประกันแบบเดิมทุกอย่าง และใบเก่าที่ออกไปแล้วไม่กระทบ ดู §5.8 และ §12.2 / ⭐ เคลมประกันเลือกได้ว่าเคลมรายการไหน และเคลมรายการหนึ่งแล้วรายการอื่นยังใช้ต่อได้ — เดิมพออนุมัติเคลม ใบทั้งใบถูกปิด ของที่เหลือประกันอีก 300 กว่าวันเคลมไม่ได้อีกเลย · รายการที่หมดอายุแล้วจะเลือกไม่ได้พร้อมบอกว่าหมดเมื่อไร ดู §5.8 / ⭐ ปิดช่องที่เคยเคลมของที่หมดประกันไปแล้วได้สำเร็จ — เดิมระบบยอมรับการเคลมรายการที่พ้นระยะประกันไปแล้วโดยไม่เตือนอะไรเลย และใบประกันที่ยกเลิกไปแล้วถูกปลุกกลับมาใช้ได้ผ่านปุ่มส่งเคลมใหม่ ดู §5.8 / ⭐ หน้ารายการประกันบอกชื่อรายการที่ใกล้หมดจริง ๆ — เดิมโชว์เลขเดียวจากระยะที่ยาวที่สุด จอที่หมดไปแล้ว 10 วันจึงยังขึ้นว่า "เหลืออีก 325 วัน" ทำให้ร้านรับเคลมผิด ดู §5.8 / ⭐ ปิดงานซ่อมแล้วระบบตัดอะไหล่ออกจากคลังให้เอง ไม่ต้องกดปุ่มเบิกอีก — เดิมไม่เคยตัดให้เลย ต้องกดเองทุกครั้งและปุ่มไม่แสดงตอนรับงานใหม่ ทำให้ร้านลงอะไหล่ครบแต่สต๊อกไม่ลด · ของไม่พอก็ยังปิดงานได้ ระบบบอกว่าตัดไม่สำเร็จตัวไหนเพราะอะไร · กดปุ่มเบิกเองไปแล้วปิดงานทีหลังไม่ตัดซ้ำ ดู §5.2 / ⭐ ตั้งเวลาเข้า-ออกงานของร้านได้แล้ว — เดิมระบบตัดสิน "สาย" ที่ 09:00 และ "ออกก่อนเวลา" ที่ 17:00 ตายตัวแก้ไม่ได้ ร้านที่เปิด 10 โมงจึงเห็นพนักงานสายทุกคนทุกวัน · ตั้งเป็นค่ากลางทั้งร้านหรือแยกรายสาขาก็ได้ · ไม่เคยตั้ง = ใช้ 09:00–17:00 เหมือนเดิม ดู §9.1A / ⭐ แก้เวลาเข้า-ออกที่บันทึกไปแล้วได้จากหน้าลงเวลา — เดิมคู่มือเขียนว่าแก้ได้แต่ไม่มีปุ่มบนหน้าจอจริง ๆ · เจ้าของ/แอดมินเท่านั้น และทุกการแก้ถูกบันทึกว่าใครทำ ค่าเดิมคืออะไร ดู §9.1B / ⭐ ลำดับตั้งต้นของคลังอะไหล่ · อุปกรณ์เสริม · สต็อกมือถือ เปลี่ยนเป็นเรียงตามชื่อ — เดิมเรียงตาม "แก้ไขล่าสุด" ของที่เพิ่งแก้จึงเด้งขึ้นบนสุดตลอดเวลา เดินนับสต๊อกตามลำดับบนจอไม่ได้ · เลือกลำดับอื่นเองได้และระบบจำให้ / ⭐ ใบแจ้งหนี้ B2B คิด VAT ถูกต้องตามกฎหมายแล้ว — เดิม "บวก" VAT ทับยอด (1,000 + 70 = 1,070) ทั้งที่ราคาที่กรอกรวม VAT อยู่แล้ว = เก็บซ้ำ · ตอนนี้ระบบ ถอด VAT ออกจากยอดให้เอง โดยอ่านอัตราจากสาขา · สาขาที่ยังไม่จด VAT จะไม่มีบรรทัด VAT เลย และช่องกรอก VAT เองถูกเอาออก ดู §6.9 / ⭐ เลขที่ใบแจ้งหนี้ B2B เปลี่ยนเป็นขึ้นต้น SINV- — เดิมใช้ INV- ซ้ำกับใบแจ้งหนี้งานซ่อม ทำให้เอกสารคนละประเภทมีเลขเดียวกันได้ · ใบที่ออกไปแล้วเลขไม่เปลี่ยน ยังเป็น INV- เหมือนเดิม ดู §6.9 / ⭐ หน้าใบแจ้งหนี้ B2B เดินดูได้ทุกหน้าแล้ว — เดิมแสดง 50 รายการแล้วจบ ใบเก่ากว่านั้นเปิดดูไม่ได้เลย · เพิ่มแท็บ "เกินกำหนด" ที่ใช้งานได้จริง และใบร่างไม่ถูกนับในยอดเงินรวมอีก ดู §6.9 / ⭐ ปุ่มเปลี่ยนหน้าในหน้าประวัติการขาย · ค่าใช้จ่าย · กะการขาย · การคืนเงิน กดได้แล้ว — เดิมกดเลขหน้าแล้วไม่มีอะไรเกิดขึ้นเลย ข้อมูลหน้า 2 เป็นต้นไปจึงเข้าถึงไม่ได้ / ⭐ ยอดขายช่วงเที่ยงคืนถึง 7 โมงเช้าถูกนับเข้าวันที่ถูกต้องแล้ว — เดิมตกไปเป็นยอดของเมื่อวาน ทำให้กราฟรายได้และรายงานคลาดเคลื่อน · ตัวเลขบนกราฟและรายงานจะขยับหลังอัปเดต เพราะยอดกลับไปอยู่วันที่ถูก / ⭐ คืนเงินแล้วใบลดหนี้เปิดขึ้นให้ทันที — เดิมหน้าต่างปิดไปพร้อมกันทำให้ไม่มีโอกาสพิมพ์ใบลดหนี้ให้ลูกค้าเลย (เป็นเอกสารที่ต้องยื่นตามกฎหมาย) · และยอดที่หน้าจอแสดงตรงกับเงินที่จ่ายจริงทุกบาทแล้ว ดู §6.6 / ⭐ กดการ์ด "สินค้าสต็อกต่ำ" บนแดชบอร์ดแล้วหน้าคลังกรองให้ทันที — เดิมเด้งไปหน้าคลังแบบไม่กรอง ต้องไปไล่หาเองว่ารุ่นไหนคือรุ่นที่การ์ดเพิ่งบอก ดู §3.1 / ⭐ หน้าประวัติสต๊อกแสดงทิศทางถูกต้องแล้ว — การขายหรือเบิกของออกขึ้นเป็นตัวเลขติดลบสีแดง (เดิมบางรายการขึ้นเป็นบวกสีเขียวเหมือนของเข้า) และการปรับยอดลงไม่ขึ้นเป็นบวกอีก · จำนวนสต๊อกจริงถูกต้องมาตลอด ผิดเฉพาะการแสดงผลบนหน้าประวัติ ดู §3.1 และ §5.4 / ⭐ สลับสาขาขณะที่ยังมีของค้างในตะกร้า ระบบจะถามก่อนว่าจะล้างตะกร้าไหม — เดิมตะกร้าค้างข้ามสาขาโดยไม่มีอะไรบอก ทำให้ขายของของสาขาเดิมด้วยบิลที่ออกในนามสาขาใหม่ได้ ดู §6.1 / ⭐ ใบรับซื้อที่ค้างสถานะ "เข้าสต็อก" แต่ไม่มีเครื่องเข้าคลังจริง กู้เองได้แล้ว — เดิมใบแบบนี้แก้เองไม่ได้เลยและถูกซ่อนจากรายการตั้งต้นด้วย ตอนนี้ขึ้นป้ายเตือนพร้อมปุ่มกู้ และบอกสาเหตุที่กู้ไม่สำเร็จเป็นภาษาไทยพร้อมทางแก้ ดู §4 / ⭐ ยกเลิกงานซ่อมที่เบิกอะไหล่ไปแล้ว เลือกได้ว่าจะคืนของเข้าคลังหรือไม่ — ติ๊กช่อง "อะไหล่ถูกใช้ไปกับเครื่องลูกค้าแล้ว" เมื่อของใส่เข้าเครื่องไปจริงและคืนไม่ได้ · ค่าตั้งต้นคือคืนเข้าคลังเหมือนเดิม และงานที่ไม่ได้เบิกอะไหล่จะไม่ถามอะไรเพิ่ม ดู §5.3A / ⭐ ตัวเลขสต๊อกเชื่อถือได้ขึ้นทั้งระบบ — ทุกการเปลี่ยนจำนวนมีบรรทัดในประวัติเสมอ (เดิมการโอนระหว่างสาขา · รับของจากใบสั่ง · ลบบิล ไม่ทิ้งร่องรอยเลย) · 2 คนขายหรือเบิกของชิ้นสุดท้ายพร้อมกันไม่ทำให้ติดลบอีก · คืนอะไหล่ได้ไม่เกินที่เบิกไป · ยกเลิกงานซ่อมแล้วอะไหล่กลับเข้าคลังให้เอง · ปิดรอบนับหักของที่ขายไประหว่างวันให้ถูก ดู §3.3 และ §5.4 / ⭐ นับสต๊อกด้วยการยิงบาร์โค้ดได้แล้ว — ยิง 1 ครั้งบวก 1 ชิ้น ไม่ต้องพิมพ์ตัวเลขเอง ใช้ได้ทั้งเครื่องยิง USB และกล้องมือถือ · มือถือยิงซ้ำเครื่องเดิมจะบอกว่า "ยิงไปแล้ว" ไม่บวกซ้ำ · ปิดรอบนับแล้วเลือกได้ว่าจะปรับสต๊อกจริงตามที่นับหรือไม่ โดยดูรายการที่จะเปลี่ยนก่อนยืนยัน ดู §3.3 / ⭐ คัดลอกรายการอุปกรณ์เสริมและอะไหล่จากสาขาหนึ่งไปอีกสาขาได้ในคลิกเดียว — ดูก่อนได้ว่าจะเพิ่มกี่รายการ และจำนวนสต๊อกเริ่มที่ 0 เสมอ ดู §16.5 / ⭐ ปุ่ม "คัดลอกข้อมูลหลัก" ที่หน้าสาขาใช้งานได้แล้ว — เดิมกดแล้วขึ้นว่าไม่สำเร็จทุกครั้งโดยที่คำขอไม่เคยถูกส่งออกจากเครื่องเลย ดู §16.5 / ⭐ หน้า Audit Log แยกให้เห็นแล้วว่ารายการไหนทีมงานผู้ให้บริการเป็นคนทำ — เดิมขึ้นเป็นชื่อพนักงานร้าน ทำให้เข้าใจผิดว่าพนักงานเป็นคนแก้ ดู §14.5 / ⭐ เอกสาร A4 ทุกใบพิมพ์ออกมาคมขึ้น — เดิมตัวหนังสือเป็นเทาอมน้ำเงินที่เครื่องอิงค์เจ็ทต้องผสมหมึกหลายสีทับ และฟอนต์ Kanit ไม่เคยถูกโหลดตอนพิมพ์เลย · ใบรับซ่อมตัวใหญ่ขึ้นด้วย ดู §12.2 / ⭐ แก้เงื่อนไขท้ายเอกสารแล้ว เครื่องหน้าเคาน์เตอร์ที่เปิดหน้าค้างไว้ได้ข้อความใหม่เองใน 45 วินาที ไม่ต้องกดรีเฟรช และมีป้ายเตือนถ้าโหลดเงื่อนไขไม่ได้ ดู §12.0A / ⭐ เน็ตหลุดแล้วรู้ตัวทันที — มีแถบเตือน และตอนกดบันทึกจะบอกชัดว่า "ยังไม่บันทึกแน่นอน กดใหม่ได้" หรือ "ไม่แน่ใจ อย่าเพิ่งกดซ้ำ" ดู §16.4 / ⭐ หน้านโยบายความเป็นส่วนตัวและเงื่อนไขการใช้บริการเป็นภาษาไทยทั้งฉบับแล้ว พร้อมเพิ่มหัวข้อขั้นตอนเมื่อเกิดเหตุข้อมูลรั่วไหล — เปิดอ่านได้ที่ /privacy และ /terms / ⭐ เลือก "ทุกสาขา" ค้างไว้แล้วกดเพิ่มอะไหล่/อุปกรณ์เสริม ระบบบอกให้เลือกสาขาก่อน แทนที่จะขึ้นหน้าขาว + กันของไปตกอยู่สาขาของอีกร้านเมื่อสลับบัญชี ดู §16.2 / ⭐ ใบเสร็จขายหน้า POS พิมพ์ออกเครื่องความร้อนแล้วอ่านออกทุกบรรทัด — เดิมบรรทัดเล็กเป็นสีเทาซึ่งเครื่องพิมพ์ความร้อนพิมพ์ไม่ได้ ดู §12.2 / ⭐ ร้านที่กรอกอีเมลลูกค้าไว้ จะได้รับแจ้งทางอีเมลทุกครั้งที่สถานะเปลี่ยน รวมตอนกดปุ่มเดินสถานะ (เดิมส่งเฉพาะตอนแก้ผ่านหน้าต่างแก้ไข) — แต่ลูกค้าร้านมือถือแทบไม่ให้อีเมล ช่องทางหลักยังเป็น QR ติดตามสถานะบนใบรับซ่อม ดู §5.3A / ⭐ ระบุชัดแล้วว่าประกันงานซ่อมเริ่มนับจาก "วันที่กดออกใบประกัน" ไม่ใช่วันที่ลูกค้ามารับเครื่อง — มีกล่องเตือนให้เองถ้าออกใบตอนที่ยังไม่ได้ส่งมอบ ดู §12.2 / ⭐ แก้คำอธิบายโหมดเก็บเงินค่าซ่อมที่หน้าตั้งค่าให้ตรงความจริง — โหมด "เก็บที่เคาน์เตอร์ซ่อม" เงินเข้ายอดปิดกะด้วย ดู §6.10 / ⭐ เดินสถานะงานซ่อมจากแถวรายการได้เลย ไม่ต้องเปิดหน้าต่างแก้ไข — ขั้นกลางกดทีเดียวเปลี่ยนทันที ส่วน "ส่งมอบแล้ว" ถามยืนยันเสมอ ดู §5.3A / ⭐ ใบเสร็จค่าบริการพิมพ์ภาษาไทยได้แล้ว และเปลี่ยนหัวเอกสารเป็น "ใบเสร็จรับเงิน/RECEIPT" ให้ตรงตามข้อกำหนดสรรพากร ดู §12.3B / ⭐ ข้อความตอนสร้างสาขา/ผู้ใช้/สินค้าเกินโควตา บอกชัดแล้วว่าเป็นเพราะยังทดลองใช้อยู่ และทางออกคืออะไร ดู §1.5 / ⭐ ยอดที่หน้าจอแสดงตอนเปลี่ยนแพ็คเกจ = ยอดที่เรียกเก็บจริง พร้อมแจกแจงที่มาของยอด + ยกเลิกรายการที่ยังไม่ได้ชำระเองได้ + แจ้งเตือนเมื่อทีมงานยกเลิกให้ ดู §13.0 / ⭐ บัญชีจะถูกสร้างหลังยืนยันอีเมลสำเร็จเท่านั้น + ช่วงทดลอง 14 วันเริ่มนับจากวันที่ยืนยัน ดู §2.1 / ⭐ ชำระค่าบริการด้วยบัตรเครดิตได้แล้ว — ยืนยันอัตโนมัติ ไม่ต้องแนบสลิป (PromptPay ยังเป็นค่าตั้งต้นเหมือนเดิม) ดู §12.3A / ⭐ ระบบสำรองข้อมูลครอบไฟล์ที่อัปโหลดแล้ว (รูปเครื่อง · สำเนาบัตร · ลายเซ็น) + เข้ารหัส + ส่งออกนอกเครื่อง + แจ้งเตือนเมื่อสำรองหยุดทำงาน ดู §17.4 / ⭐ รองรับแพ็คเกจแบบตกลงราคาเฉพาะร้าน — ซ่อนจากหน้าราคาสาธารณะแต่ต่ออายุได้ปกติ และกันการเผลอเปลี่ยนไปแพ็คเกจที่โควตาน้อยกว่า ดู §1.5 / ⭐ บันทึกเงินที่หยิบเข้า-ออกลิ้นชักได้แล้ว เช่นค่าส่ง — ปิดกะไม่ขึ้นว่าเงินขาดอีก ดู §10B.5 / ⭐ วิธีตั้งเบราว์เซอร์ก่อนพิมพ์สลิปครั้งแรก — ต้องเอาติ๊ก "ส่วนหัวและส่วนท้าย" ออก ไม่งั้นกระดาษยาวเกินทุกใบ ดู §12.2 / แก้ใบเสร็จสลิปพิมพ์กระดาษยาวเกิน — ตอนนี้พิมพ์เท่าเนื้อหาเท่านั้น / ตั้งความกว้างกระดาษใบเสร็จได้ 58 หรือ 80 มม. ที่หน้าตั้งค่า — ดู §12.2 / ช่วงทดลองใช้ 14 วันเปิดครบทุกฟีเจอร์ โควตาเท่าแพ็คเกจมืออาชีพ — ดู §1.5 / แก้หน้างานช่างขึ้นว่าไม่มีงานทั้งที่มีงานอยู่ / ใบกำกับภาษีงานซ่อมแสดง VAT แบบถอดออกจากยอด ตรงกับเงินที่รับจริง / จ่ายหลายช่องทางในบิลเดียว + รองรับโครงการรัฐร่วมจ่าย ไทยช่วยไทยพลัส 60/40 — ดู §6.13 / แก้ปุ่ม "งานซ่อมรอชำระ" ไม่ขึ้นทั้งที่ตั้งโหมด POS ไว้แล้ว — ระบบอ่านค่าจริงใหม่ทุกครั้งที่เข้าใช้งาน / ใบเสร็จพิมพ์ซ้ำแสดงชื่อรายการค่าซ่อมแล้ว ไม่ขึ้น "-" อีก / ตะกร้า POS ไม่มีแถบเลื่อนแนวนอนทุกความกว้างหน้าจอ / ปุ่มกลับขึ้นบนสุดใช้งานได้ครบทุกหน้ารวมฝั่งผู้ดูแลระบบ / หน้าตั้งค่าแยกปุ่มบันทึกเป็น 2 ปุ่มตามขอบเขต / แก้วันที่ลงเวลาทำงานถอยไป 1 วัน / ส่งคืนเครื่องโดยยังไม่ลงราคา ไม่ถูกนับว่าจ่ายแล้วอีกต่อไป / คืนเงินค่าซ่อมแล้วงานกลับเข้าคิวอัตโนมัติ / ของที่ไม่นับสต๊อกไม่โผล่ในลิสต์ใกล้หมด / ค่าซ่อมรู้วิธีรับเงินแล้ว — เงินสด/โอน/บัตร / ค่าซ่อมที่รับเองเข้ายอดปิดกะ / สินค้าที่ไม่นับสต๊อก / แตะการ์ดแล้วเคาะราคาที่จะคิด / แก้พักบิลแล้วค่าซ่อม-เทรดอินหาย / เตือนก่อนเปิดบิลพักทับตะกร้า / ช่องต้นทุน/ชิ้นของอะไหล่ที่พิมพ์เอง / กำไรขั้นต้นหักต้นทุนอะไหล่ซ่อมแล้ว / เพิ่มข้อมูลหลักได้จากหน้างาน 6 ชนิด / สาขาใหม่ได้ข้อมูลหลักอัตโนมัติ / ของแถม + ส่วนลดรายรายการในใบซ่อม / ปุ่มเบิกอะไหล่ตัดสต๊อกจากใบซ่อม / ช่อง SN สำหรับเครื่องที่ไม่มี IMEI / เงื่อนไขท้ายเอกสารแก้เองได้ 10 จุด / ยอดรับเงินวันนี้รวมงานซ่อม+งานขาย / ซ่อมเสร็จโยนเข้าหน้าขายเพื่อชำระเงิน / ⭐⭐ หน้าติดตามของลูกค้าบอกชัดแล้วว่ารายการไหนเป็น "ของแถม" หรือถูกลดราคา — เดิมโชว์ราคาเต็มทุกบรรทัดแล้วยอดรวมไม่ตรงกัน ลูกค้าอ่านว่าระบบคิดเงินผิด · ตอนนี้มีป้าย "ของแถม" ราคาเต็มขีดฆ่า และยอดจริง ⇒ บวกทุกบรรทัดแล้วเท่ากับ "ราคารวม" · ใบเก่าที่ไม่มีส่วนลดและไม่มีของแถม แสดงเหมือนเดิมทุกอย่าง (ดู §5.7) / ⭐ ปุ่ม "คัดลอกจากอาการเสีย" — ไม่ต้องพิมพ์ 2 รอบ กดแล้วแก้ก่อนบันทึกได้ (ดู §5.3) / ⭐ ปุ่ม "เพิ่มค่าบริการ" ใช้ได้ที่หน้า "งานของฉัน" ของช่างแล้ว (ดู §5.3) / ⭐⭐ ค่าบริการตัดสต๊อกได้แล้ว — กด "ผูกอะไหล่จากคลัง" ในแถวค่าบริการ แล้วปิดงาน ระบบตัดสต๊อกและลงต้นทุนจริงให้ · ชื่อและราคาที่กรอกไว้ไม่เปลี่ยน · รายการเก่าทุกใบไม่เปลี่ยน (ดู §5.3) / ⭐ ลำดับรายการอะไหล่ไม่สลับเองอีกแล้ว — เดิมสลับที่กันได้ทุกครั้งที่แก้แถวใดแถวหนึ่ง · เอกสารที่ออกไปแล้วไม่เปลี่ยน (ดู §5.3))
| หัวข้อ | รายละเอียด |
|---|---|
| 1. บทนำ | ภาพรวมระบบ, ความสามารถหลัก, บทบาท, ตารางสิทธิ์ |
| 2. เริ่มต้นใช้งาน | สมัครใช้งาน, ยืนยัน OTP, เข้าสู่ระบบ, แดชบอร์ด, แนะนำระบบ (Tour), โปรไฟล์ |
| 3. คลังสินค้า | สต็อกมือถือ, อุปกรณ์เสริม (+ สินค้าที่ไม่นับสต๊อก), พิมพ์ฉลาก QR/Barcode, รอบนับสต็อก, โอนระหว่างสาขา |
| 4. รับซื้อ-ตีราคา | รับซื้อมือถือ, ตีราคา, Checklist อุปกรณ์, เกรด A/B/C/D |
| 5. งานซ่อม | รับเครื่อง, งานช่าง, รายการทั้งหมด, คลังอะไหล่, Template ราคาซ่อม, ผู้จัดหา + สั่งอะไหล่, Checklist, เอกสาร, ติดตามออนไลน์ลูกค้า, รับเงินค่าซ่อม + ระบุวิธีรับเงิน, ประกัน |
| 6. ขายสินค้า (POS) | ตะกร้าสินค้า, รับเทรดเครื่องเก่า, วิธีชำระเงิน, PromptPay, หน้าจอลูกค้า, พักบิล, ประวัติ + reprint + void + refund + Z report, ใบแจ้งหนี้ B2B, เก็บเงินค่าซ่อมที่หน้าขาย, ยอดรับเงินวันนี้ (แยกเงินสด/โอน), สินค้าไม่นับสต๊อก + เคาะราคา, จ่ายหลายช่องทางในบิลเดียว + โครงการรัฐ 60/40 |
| 7. ประกันสินค้า | เพิ่มประกัน, ติดตามหมดอายุ, ประวัติ |
| 8. ลูกค้า | เพิ่ม/แก้ไข/ค้นหาลูกค้า, ประวัติการซื้อ |
| 9. ลงเวลาทำงาน | บันทึกเวลาเข้า-ออก, QR Code Kiosk |
| 10. เงินเดือน | คำนวณเงินเดือน, อนุมัติ, บันทึกการจ่าย |
| 10A. ค่าใช้จ่ายดำเนินงาน | บันทึก rent / utility / fuel / marketing — feed PIT ACTUAL + ภ.พ.30 input VAT + WHT |
| 10B. กะการขาย (Cashier Shift) | เปิด-ปิดกะ + ลิ้นชักเงินสด — variance ระหว่าง expected vs actual + บังคับเปิดกะก่อนขาย (CASHIER/SALES default, ปรับได้) + ค่าซ่อมที่รับสดเข้ายอดกะ + เงินเข้า/ออกลิ้นชัก (ค่าส่ง ซื้อของหน้าร้าน เติมเงินทอน) — §10B.5 |
| 11. รายงาน | ยอดขาย, การซ่อม, การรับซื้อ, สินค้าคงเหลือ, การเงิน |
| 11A. ภาษี (เมนูใหม่) | ภาพรวม + ภ.ง.ด.94/90 (PIT) + ภ.ง.ด.50/51 (CIT) + ภ.พ.30 (VAT) + ภ.ง.ด.3/53 (WHT) + ตั้งค่าภาษี |
| 12. เอกสารพิมพ์ในระบบ | ตั้งเบราว์เซอร์ก่อนพิมพ์สลิปครั้งแรก (แก้กระดาษยาวเกิน), เงื่อนไขท้ายเอกสารแก้เองได้, ใบเสร็จขาย/รับซื้อ/ซ่อม, สลิปเงินเดือน, ใบเครม, ใบสรุปการมาทำงาน, ใบเบิก/รับเข้าอะไหล่ |
| 13. Portal (Tenant Self-Service) | ติดต่อทีมงาน (LINE/Messenger) + อีเมลที่ร้านจะได้รับ, Support Tickets, ประกาศ, Billing (+ ชำระด้วยบัตรเครดิต — ยืนยันอัตโนมัติ), อัปเกรดแพ็กเกจ |
| 14. การจัดการระบบ (Admin) | สาขา, ผู้ใช้งาน, ข้อมูลหลัก, ตั้งค่า, Audit Log |
| 15. การแจ้งเตือน | Notification Center แบบ Real-time + Push Notifications แม้ปิดเว็บ + ติดตั้งเป็นแอป (PWA) |
| 16. Multi-Tenant และ Multi-Branch | Tenant Isolation, Branch Selector, คัดลอกรายการสินค้าข้ามสาขา |
| 17. ภาคผนวก | API Endpoints, Tech Stack, Deployment, Backup & Restore, Security |
MobileHub v2 เป็นระบบจัดการร้านมือถือแบบ Multi-Tenant SaaS ที่ออกแบบมาสำหรับร้านมือถือทุกขนาด ตั้งแต่ร้านสาขาเดียวจนถึงเชนร้านค้าหลายสาขา ระบบครอบคลุมการทำงานตั้งแต่การรับซื้อมือถือมือสอง การซ่อมบำรุง การขายสินค้าแบบ POS ไปจนถึงการจัดการบุคลากรและรายงานทางการเงิน
ระบบพัฒนาด้วย Next.js 16 + React 19 + Mantine v8 ทางฝั่งหน้า และ Fastify + Prisma + PostgreSQL ทางฝั่งหลัง รองรับการใช้งานแบบ Real-time ผ่าน Socket.IO และออกแบบตามมาตรฐาน Mobile-First เพื่อให้ใช้งานสะดวกบนมือถือ
โดเมน: mobilehub.ajsoftwaredev.com
| 🔧 ความสามารถ | 📝 รายละเอียด |
|---|---|
| 📦 คลังสินค้า | จัดการสต็อกมือถือและอุปกรณ์เสริม พร้อมอัปโหลดรูปภาพ |
| 🛒 รับซื้อ-ตีราคา | บันทึกการรับซื้อมือถือมือสอง พร้อม Checklist อุปกรณ์ |
| 🔧 งานซ่อม | ระบบรับเครื่องซ่อม ติดตามสถานะ แจ้งลูกค้าแบบ Real-time |
| 💰 POS ขายสินค้า | ระบบขายสินค้าพร้อม PromptPay QR, Credit Card, โอน |
| 🛡️ ประกันสินค้า | บันทึกและติดตามประกันสินค้าและงานซ่อม |
| 👥 ลูกค้า | จัดการฐานข้อมูลลูกค้า ประวัติการซื้อ-ซ่อม |
| ⏰ ลงเวลาทำงาน | QR Code Kiosk สำหรับพนักงานลงเวลาเข้า-ออก |
| 💵 เงินเดือน | คำนวณ อนุมัติ และบันทึกการจ่ายเงินเดือน |
| 📊 รายงาน | รายงานยอดขาย, ซ่อม, การเงิน, VAT ออก Excel ได้ |
| 🔔 การแจ้งเตือน Real-time | Bell notification ทุก role พร้อม Socket.IO |
| 🏢 Multi-Branch | รองรับหลายสาขา กรองข้อมูลตามสาขา |
| 🔒 Multi-Tenant | แต่ละ Tenant มีข้อมูลแยกกัน (Tenant Isolation) |
| 🎫 Support Tickets | ยื่น Ticket สนับสนุนกับทีมงาน |
| 📢 ประกาศ | รับข่าวสารประกาศจากทีมงาน |
| 💳 Billing | จัดการ Subscription และชำระค่าบริการ |
| 📝 Audit Log | บันทึกทุกการกระทำในระบบ (ใครทำอะไร เมื่อไหร่) |
| 🖥️ Customer Display | หน้าจอแสดงราคาสำหรับลูกค้า (POS) |
| 🏷️ ข้อมูลหลัก | จัดการ Master Data — ยี่ห้อ, รุ่น, สี, ความจุ ฯลฯ |
| บทบาท | ชื่อในระบบ | คำอธิบาย |
|---|---|---|
| 👑 เจ้าของ | OWNER | สิทธิ์สูงสุด เข้าถึงได้ทุกส่วน รวมถึง Billing |
| 🛠️ ผู้ดูแลระบบ | ADMIN | จัดการระบบ ผู้ใช้ สาขา ตั้งค่า |
| 📋 ผู้จัดการ | MANAGER | ดูรายงาน จัดการสต็อก ดูแลพนักงาน |
| 💰 แคชเชียร์ | CASHIER | รับชำระเงิน ขายสินค้า |
| 🏪 พนักงานขาย | SALES | ขายสินค้า ดูสต็อก |
| 🔧 ช่างซ่อม | TECHNICIAN | จัดการงานซ่อม คลังอะไหล่ |
| 🔧💰 ช่างขาย | SALESTECH | มีสิทธิ์ทั้ง SALES และ TECHNICIAN |
| โมดูล | OWNER | ADMIN | MANAGER | CASHIER | SALES | TECH | SALESTECH |
|---|---|---|---|---|---|---|---|
| แดชบอร์ด | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| สต็อกมือถือ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| อุปกรณ์เสริม | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| รับซื้อ-ตีราคา | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| รับเครื่อง (ซ่อม) | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| งานช่าง | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| รายการซ่อมทั้งหมด | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| คลังอะไหล่ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| Repair Checklist | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| ออกเอกสารซ่อม | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| ประกันงานซ่อม | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| ขายสินค้า (POS) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| กะการขาย + ลิ้นชักเงินสด | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| ประกันสินค้า | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| ลูกค้า | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| ลงเวลา | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| เงินเดือน | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| รายงาน | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Portal Tickets | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Portal ประกาศ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Portal Billing | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| สาขา | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ผู้ใช้งาน | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ข้อมูลหลัก | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ตั้งค่า | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Audit Log | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
⭐ ตารางนี้คือ "ค่าเริ่มต้น" — ปรับให้เข้ากับวิธีทำงานของร้านคุณได้ (19 ส.ค. 2569)
ทุกร้านเริ่มต้นด้วยสิทธิ์ตามตารางข้างบนเหมือนกันหมด แต่ตอนนี้ปรับเฉพาะร้านของคุณได้ โดยไม่กระทบร้านอื่น — เช่น ร้านที่แคชเชียร์ต้องช่วยรับงานซ่อมด้วย ก็เปิดสิทธิ์งานซ่อมให้แคชเชียร์ได้ ส่วนร้านที่แยกหน้าที่กันชัดเจนก็ปล่อยไว้ตามเดิม
ปรับได้ 10 กลุ่มงาน — สิทธิ์เจ้าของร้าน · จัดการระบบร้าน (ผู้ดูแล) · สิทธิ์ระดับผู้จัดการ · งานแคชเชียร์ (รับเงิน) · งานขาย · งานซ่อม · รายงาน · เงินเดือน · ตั้งค่าร้าน · สลับสาขาที่ทำงานอยู่ — กำหนดแยกได้ทีละบทบาท
⭐ ตั้งเองได้จากหน้าจอแล้ว (20 ส.ค. 2569) — ไปที่ ตั้งค่า → สิทธิ์ตามบทบาท (เจ้าของร้าน/ผู้ดูแลระบบเท่านั้น) ไม่ต้องแจ้งผู้ให้บริการอีกแล้ว ร้านที่ยังไม่ได้เข้าไปแตะ = ใช้สิทธิ์ตามตารางข้างบนทุกอย่าง ไม่มีใครได้หรือเสียสิทธิ์
เมื่อปรับแล้ว พนักงานจะเห็นเมนูชุดใหม่ ตอนเปิดแอปครั้งถัดไป — ไม่ต้องออกจากระบบแล้วเข้าใหม่ (ดูรายละเอียดที่ §14.2)
ระบบมี 3 แพ็คเกจ ต่างกันที่ ขีดจำกัด (limits) + ฟีเจอร์ขั้นสูง (advanced features)
| แพ็คเกจ | ราคา/เดือน | ราคา/ปี | สาขา | ผู้ใช้ | สินค้า |
|---|---|---|---|---|---|
| เริ่มต้น (Starter) | ฿599 | ฿5,990 | 1 | 3 | 500 |
| มืออาชีพ (Professional) ⭐ | ฿1,499 | ฿14,990 | 3 | 10 | 2,000 |
| องค์กร (Enterprise) | ฿2,499 | ฿24,990 | ไม่จำกัด | ไม่จำกัด | ไม่จำกัด |
| ฟีเจอร์ | Starter | Pro | Enterprise |
|---|---|---|---|
| ระบบขายหน้าร้าน (POS) | ✅ | ✅ | ✅ |
| คลังสินค้า | ✅ | ✅ | ✅ |
| จัดการลูกค้า | ✅ | ✅ | ✅ |
| ระบบรับซ่อม | ✅ | ✅ | ✅ |
| ลงเวลา (พื้นฐาน) | ✅ | ✅ | ✅ |
| รายงานพื้นฐาน | ✅ | ✅ | ✅ |
| Export รายงาน Excel/PDF | ❌ | ✅ | ✅ |
| จอแสดงผลลูกค้า (Customer Display) | ❌ | ✅ | ✅ |
| โหมด Kiosk ลงเวลา QR | ❌ | ✅ | ✅ |
| Dashboard หลายสาขา ("ทุกสาขา") | ❌ | ✅ | ✅ |
| API access | ❌ | ❌ | ✅ |
| ระบบเงินเดือน (Payroll) | ❌ | ❌ | ✅ |
| ลบโลโก้ MobileHub (White-label) | ❌ | ❌ | ✅ |
💡 เมนูที่ไม่มีในแพ็คเกจของคุณจะถูกซ่อนอัตโนมัติ — ถ้าต้องการใช้งานต้องอัพเกรดแพ็คเกจที่หน้า Portal Billing
ระหว่างทดลองใช้ คุณจะเห็นและใช้งานได้ทุกเมนู รวมถึงฟีเจอร์ของแพ็คเกจองค์กร (ระบบเงินเดือน · Export รายงาน · จอแสดงผลลูกค้า · โหมด Kiosk · Dashboard หลายสาขา ฯลฯ)
ทำไมถึงเปิดให้หมด — เพื่อให้ได้ลองของจริงครบทุกอย่างก่อนตัดสินใจว่าแพ็คเกจไหนเหมาะกับร้าน จะได้ไม่ต้องเดาหรือจ่ายแพงเกินจำเป็น
สิ่งที่ยังจำกัดอยู่คือ "จำนวน" ไม่ใช่ "ฟีเจอร์" — โควตาสาขา / ผู้ใช้ / สินค้า ถูกตรึงไว้ที่ระดับ มืออาชีพ (Professional) คือ 3 สาขา · 10 ผู้ใช้ · 2,000 สินค้า
| ช่วงทดลอง 14 วัน | หลังสมัครแพ็คเกจ | |
|---|---|---|
| ฟีเจอร์/เมนู | ✅ ครบทุกอย่าง | ตามแพ็คเกจที่เลือก |
| จำนวนสาขา | 3 | ตามแพ็คเกจ |
| จำนวนผู้ใช้ | 10 | ตามแพ็คเกจ |
| จำนวนสินค้า | 2,000 | ตามแพ็คเกจ |
⚠️ เหตุผลที่ไม่ปล่อยโควตาไม่จำกัดในช่วงทดลอง — ถ้าย้ายข้อมูลเข้ามาเกินขนาดแพ็คเกจที่จะซื้อจริง พอหมดช่วงทดลองจะเกินเพดานทันที แล้วต้องเลือกระหว่างจ่ายแพงกว่าที่ตั้งใจ กับลบข้อมูลตัวเองทิ้ง
💡 เมื่อหมดช่วงทดลอง เมนูที่ไม่อยู่ในแพ็คเกจที่เลือกจะถูกซ่อนไป แต่ข้อมูลไม่หาย ถ้าอัพเกรดภายหลังจะกลับมาใช้ได้ทันที
ถ้าสร้างสาขา / ผู้ใช้ / สินค้าเกินจำนวนที่กำหนด ระบบจะขึ้นข้อความแจ้งเตือน ข้อความจะต่างกัน 2 แบบ ตามสถานะร้าน เพราะทางแก้คนละทางกัน
ก) ร้านที่ชำระเงินแล้ว (ใช้งานจริง)
แพ็คเกจ "มืออาชีพ" เพิ่มได้สูงสุด 3 สาขา — ตอนนี้ใช้ครบแล้ว (3/3) · อัพเกรดแพ็คเกจเพื่อเพิ่ม
→ ต้องลบรายการเก่าออก หรือ อัพเกรดแพ็คเกจ
ข) ร้านที่ยังอยู่ในช่วงทดลองใช้ 14 วัน
ระหว่างทดลองใช้ จำกัดไว้ที่ 3 สาขา — ตอนนี้ใช้ครบแล้ว (3/3) · แพ็คเกจ "มืออาชีพ 4 สาขา"
ที่เลือกไว้ให้ 4 สาขา จะใช้ได้เต็มเมื่อชำระเงินเริ่มใช้งานจริง
→ อัพเกรดแพ็คเกจไม่ช่วย เพราะช่วงทดลองตรึงโควตาไว้ที่ระดับมืออาชีพเสมอ ทางออกคือ ชำระเงินเพื่อเริ่มใช้งานจริง แล้วโควตาของแพ็คเกจที่เลือกไว้จะมีผลทันที
💡 ทำไมตัวเลขในข้อความถึงไม่ตรงกับชื่อแพ็คเกจ — ชื่อบอก 4 สาขา แต่ตอนนี้ตันที่ 3 เพราะสองค่านี้มาคนละที่: 3 คือเพดานช่วงทดลอง ส่วน 4 คือเพดานของแพ็คเกจที่จะได้หลังชำระเงิน ข้อความจึงเขียนบอกทั้งสองค่าไว้ ไม่ใช่ระบบนับผิด
⚠️ ถ้าแพ็คเกจที่เลือกไว้ให้ น้อยกว่า เพดานช่วงทดลอง (เช่นเลือกแพ็คเกจเริ่มต้นที่ให้ 1 สาขา) ข้อความจะเตือนว่าต้อง เปลี่ยนแพ็คเกจก่อนชำระเงิน — เพราะชำระไปแล้วโควตาจะ ลดลง มาเท่าแพ็คเกจ ไม่ใช่เพิ่มขึ้น
บางร้านตกลงเงื่อนไขกับทีมงานเป็นกรณีพิเศษ (เช่น ราคาเท่าแพ็คเกจมืออาชีพ แต่ได้ 4 สาขา) ร้านแบบนี้จะถือ แพ็คเกจเฉพาะของร้านตัวเอง ซึ่งมีพฤติกรรมต่างจากแพ็คเกจปกติดังนี้
| แพ็คเกจปกติ | แพ็คเกจเฉพาะร้าน | |
|---|---|---|
| แสดงบนหน้าราคาสาธารณะ | ✅ | ❌ ซ่อน (ร้านอื่นไม่เห็นเงื่อนไขของคุณ) |
เห็นในหน้า /portal/upgrade ของร้านตัวเอง | ✅ | ✅ เห็นและติดป้าย "แพ็คเกจปัจจุบัน" |
| ต่ออายุเมื่อครบกำหนด | ✅ | ✅ ทำได้ตามปกติ |
| สมัครใหม่ได้เองจากหน้าราคา | ✅ | ❌ ต้องติดต่อทีมงาน |
⚠️ ระบบจะกันไม่ให้คุณเผลอเปลี่ยนไปแพ็คเกจที่ราคาเท่ากันแต่โควตาน้อยกว่า
ถ้ากดเลือกแพ็คเกจที่ทำให้จำนวนสาขา/ผู้ใช้/สินค้าลดลง จะขึ้นข้อความว่า
เปลี่ยนไปแพ็คเกจนี้ไม่ได้ — ราคาเท่ากันแต่โควตาลดลง (สาขา 4 → 3) กรุณาติดต่อผู้ดูแลระบบ
ด่านนี้มีไว้เพราะการเปลี่ยนแพ็คเกจที่ราคาเท่ากันจะมีผล ทันทีโดยไม่ต้องชำระเงิน —
ถ้าไม่มีด่าน กดผิดครั้งเดียวจะเสียโควตาที่ซื้อไว้โดยไม่มีอะไรเตือน
💡 ช่วงทดลองใช้ยังตรึงโควตาที่ระดับมืออาชีพเสมอ (3 สาขา) แม้ร้านจะถูกตั้งเป็นแพ็คเกจ เฉพาะที่ให้ 4 สาขาแล้วก็ตาม — โควตาที่ตกลงไว้จะมีผลหลังเปลี่ยนสถานะเป็นใช้งานจริง ถ้ากดสร้างสาขาที่ 4 ระหว่างนี้จะขึ้นข้อความแบบ (ข) ในหัวข้อ พฤติกรรมเมื่อเกินขีดจำกัด ด้านบน ซึ่งบอกไว้ทั้งเพดานตอนนี้ (3) และเพดานที่ตกลงไว้ (4) พร้อมทางออก
📍 หน้า: /register
👤 สิทธิ์: สาธารณะ (ไม่ต้องเข้าสู่ระบบ)
วัตถุประสงค์: สร้าง Tenant ใหม่ (ร้านค้า) ในระบบ MobileHub
ขั้นตอน:
https://mobilehub.ajsoftwaredev.com/register⚠️ บัญชีจะถูกสร้างหลังยืนยันอีเมลสำเร็จเท่านั้น (ปรับปรุง 7 ส.ค. 2569) ตอนกด "สมัครใช้งาน" ระบบยังไม่สร้างร้านให้ — จะเก็บข้อมูลไว้ก่อนแล้วส่ง OTP ไปที่อีเมล ต่อเมื่อกรอก OTP ถูกต้อง ร้านและบัญชีเจ้าของถึงจะถูกสร้างขึ้นจริง
สิ่งที่ต้องรู้:
test.com หรือบริการอีเมลชั่วคราว)
เพราะบัญชีที่รับ OTP ไม่ได้จะกู้รหัสผ่านคืนไม่ได้ในอนาคต⚠️ หมายเหตุ: บัญชีที่สมัครใหม่จะได้รับสิทธิ์ OWNER โดยอัตโนมัติ และเป็น Tenant ใหม่แยกจากกัน
📍 หน้า: /verify-email
👤 สิทธิ์: ผู้ที่เพิ่งสมัครใหม่
วัตถุประสงค์: ยืนยันความเป็นเจ้าของอีเมลก่อนเข้าใช้งานระบบ
ขั้นตอน:
| ตัวเลือก | รายละเอียด |
|---|---|
| OTP หมดอายุ | OTP มีอายุ 10 นาที |
| ขอ OTP ใหม่ | กดปุ่ม "ส่งใหม่" ได้หลังจาก 60 วินาที |
| OTP ผิด | ระบบแจ้งเตือนและให้กรอกใหม่ |
| กรอกผิดหลายครั้ง | กรอกผิดครบ 5 ครั้ง จะถูกกั้นไว้ ต้องกด "ส่งรหัสใหม่" ก่อนถึงจะกรอกต่อได้ (ป้องกันการสุ่มเดารหัส) |
| ยังไม่มีบัญชีจนกว่าจะยืนยัน | ระหว่างนี้ยังเข้าสู่ระบบไม่ได้ เพราะบัญชีจะถูกสร้างหลังยืนยันสำเร็จ |
💡 เคล็ดลับ: หาก OTP หมดอายุ กดปุ่ม "ส่งรหัสใหม่" เพื่อรับ OTP ชุดใหม่ได้ทันที
📍 หน้า: /login
👤 สิทธิ์: สาธารณะ
วัตถุประสงค์: เข้าสู่ระบบด้วยอีเมลและรหัสผ่าน
ขั้นตอน:
https://mobilehub.ajsoftwaredev.com/login⚠️ หมายเหตุ: Login ใช้เพียง 2 ฟิลด์ (อีเมล + รหัสผ่าน) ไม่ต้องกรอก Tenant Slug
💡 เคล็ดลับ: Token มีอายุ 24 ชั่วโมง หากหมดอายุจะถูก Redirect ไปหน้า Login โดยอัตโนมัติ
📍 หน้า: /dashboard
👤 สิทธิ์: ทุก Role
วัตถุประสงค์: ภาพรวมสถิติและข้อมูลสำคัญของร้าน แสดงข้อมูลตาม Role ของผู้ใช้
การแสดงผลตาม Role:
| Role | ข้อมูลที่เห็น |
|---|---|
| OWNER / ADMIN | สถิติทั้งหมด + กราฟรายได้ + Top Products + งานซ่อมรอ + สินค้าใกล้หมด |
| MANAGER | สถิติยอดขาย + รายงานสรุป + Top Products |
| TECHNICIAN | งานซ่อมของตัวเอง + สถิติการซ่อม |
| SALES / CASHIER | ยอดขายวันนี้ + สินค้าในสต็อก |
การ์ดสถิติหลัก (Admin/Owner):
💡 เคล็ดลับ: แดชบอร์ดกรองข้อมูลตาม สาขาที่เลือก ในส่วนบน เปลี่ยนสาขาได้จาก Branch Selector ด้านบน
📍 เปิดได้ที่: เด้งเองครั้งแรกหลังเข้าสู่ระบบ + ปุ่ม "แนะนำระบบ" ในเมนูซ้าย (มี Badge "ใหม่" สีฟ้า) 👤 สิทธิ์: ทุก Role (เนื้อหาแตกต่างกันตาม Role)
วัตถุประสงค์: ช่วยผู้ใช้ใหม่เริ่มต้นใช้งานเร็ว — ระบบจะแสดง Welcome Modal พร้อม Checklist สิ่งที่ควรทำก่อน + Guided Tour พาไล่ดูเมนูสำคัญทีละข้อ
Welcome Modal — เด้งครั้งเดียวต่อ User:
ครั้งแรกที่ Login จะเห็น Modal สีเทา-ฟ้า กลางจอ ประกอบด้วย:
Guided Tour — Spotlight แต่ละเมนู:
เมื่อเริ่ม Tour ระบบจะ:
Tour ตาม Role (สรุป):
| Role | จำนวน Steps | เมนูที่ Tour พาไล่ |
|---|---|---|
| OWNER / ADMIN | 8 ข้อ | รับเครื่อง → สต็อกมือถือ → อุปกรณ์เสริม → คลังอะไหล่ → POS → รายงาน → ตั้งค่า → 🔔 (5 ข้อแรกเรียงเหมือนรายการในหน้าต้อนรับ) |
| MANAGER | 6-7 ข้อ | Dashboard → POS → รายการซ่อม → ลงเวลา → รายงาน → ข้อมูลหลัก → 🔔 |
| CASHIER | 4-5 ข้อ | Dashboard → POS → สต็อก → ลูกค้า → 🔔 |
| SALES | 5-6 ข้อ | Dashboard → POS → สต็อก → รับซื้อ → ลูกค้า → 🔔 |
| TECHNICIAN | 2-3 ข้อ | งานช่าง → คลังอะไหล่ → 🔔 |
เปิดดูซ้ำได้ตลอด:
ถ้าปิดไปแล้วต้องการดูใหม่ — คลิก "แนะนำระบบ" ในเมนูซ้าย (อยู่ด้านล่างใกล้กับ "คู่มือการใช้งาน") → Welcome Modal เปิดอีก
💡 เคล็ดลับ: ระบบบันทึกว่าคุณดูแล้วลง localStorage ของเบราว์เซอร์ — ถ้าเปลี่ยนเครื่อง / เคลียร์ cache จะเด้งใหม่อีกครั้ง
📍 หน้า: /profile
👤 สิทธิ์: ทุก Role
วัตถุประสงค์: ดูและแก้ไขข้อมูลส่วนตัว เปลี่ยนรหัสผ่าน อัปโหลดรูปโปรไฟล์
ฟิลด์ที่แก้ไขได้:
| ฟิลด์ | คำอธิบาย |
|---|---|
| ชื่อ-นามสกุล | ชื่อที่แสดงในระบบ |
| เบอร์โทร | เบอร์ติดต่อ |
| รูปโปรไฟล์ | อัปโหลดรูปภาพ (สูงสุด 5MB) |
| รหัสผ่านเก่า | ต้องกรอกเพื่อเปลี่ยนรหัสผ่าน |
| รหัสผ่านใหม่ | ขั้นต่ำ 8 ตัวอักษร |
📍 หน้า: /stock
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: จัดการสินค้ามือถือในคลัง — เพิ่ม แก้ไข ดูสต็อก
คุณสมบัติหน้านี้:
ขั้นตอนเพิ่มสินค้าใหม่:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ยี่ห้อ | เลือกจาก Master Brands (Apple, Samsung ฯลฯ) | ✅ |
| รุ่น | เลือกจาก Master Models | ✅ |
| ความจุ | 64GB, 128GB, 256GB ฯลฯ | ✅ |
| สี | เลือกจาก Master Colors | ✅ |
| IMEI/Serial | หมายเลขเครื่อง | ✅ |
| สภาพ | NEW (ใหม่) / LIKE_NEW (เหมือนใหม่) / GRADE_A (สภาพดีมาก) / GRADE_B (สภาพดี) / GRADE_C (มีตำหนิ) / GRADE_D (ตำหนิเยอะ — ราคาถูก) | ✅ |
| ราคาทุน | ราคาที่รับซื้อมา | ✅ |
| ราคาขาย | ราคาที่ตั้งขาย | ✅ |
| สถานะ | IN_STOCK, RESERVED, SOLD | ✅ |
| สาขา | เลือกสาขาที่เก็บสินค้า | ✅ |
| ซื้อจาก | ผู้จัดหา (ร้านส่ง) หรือ ลูกค้า (รับซื้อต่อ) — เลือกได้อย่างเดียว | ❌ |
| หมายเหตุ | รายละเอียดเพิ่มเติม | ❌ |
| รูปภาพ | อัปโหลดสูงสุดหลายรูป (5MB/ไฟล์) | ❌ |
การสแกน Barcode:
มุมมองมือถือ:
⚠️ หมายเหตุ: IMEI/Serial Number ต้องไม่ซ้ำกันในระบบ (Unique ต่อ Tenant)
ตอนเพิ่ม/แก้ไขเครื่อง มีช่อง "ซื้อจาก" เป็นชิปให้เลือก: ไม่ระบุ / ผู้จัดหา (ร้านส่ง) / ลูกค้า (รับซื้อเครื่องต่อจากลูกค้าโดยตรง เช่น เทิร์นเครื่อง)
/suppliers/customers) ก่อน · "ลูกค้าทั่วไป" (ลูกค้าที่ระบบสร้างให้อัตโนมัติสำหรับบิลที่ไม่ระบุตัวลูกค้า) จะไม่ปรากฏให้เลือกเลย เพราะไม่ใช่คนจริงที่ขายเครื่องให้ร้านดูย้อนหลังทุกรายการได้ที่เมนู "ประวัติการซื้อเข้า" (รายละเอียดที่ §5.4B.4)
⚠️ ข้อมูลนี้เริ่มเก็บตั้งแต่วันที่เปิดใช้ฟีเจอร์นี้ (24 ส.ค. 2569) เป็นต้นไป เครื่องที่มีอยู่แล้วในระบบก่อนหน้านั้นจะไม่มีข้อมูลผู้ขายให้ดู (ช่องว่างเปล่า) ระบบไม่ได้เดาหรือกรอกย้อนหลังให้ — ถ้าอยากมีประวัติของเครื่องเก่า ต้องเข้าไปแก้ไขแล้วเลือกเองทีละเครื่อง
กดการ์ด "สินค้าสต็อกต่ำ" บนแดชบอร์ด แล้วกด "ไปสต็อก" หน้าคลังจะกรองให้เหลือเฉพาะรุ่นที่การ์ดชี้ทันที พร้อมแถบบอกว่ากำลังกรองอยู่และปุ่มล้างตัวกรอง
⚠️ เดิมกดแล้วเด้งไปหน้าคลังโดยไม่กรองอะไรเลย — เห็นรายการทั้งหมดเหมือนไม่ได้กด ต้องไปไล่หาเองว่ารุ่นไหนคือรุ่นที่การ์ดเพิ่งเตือน
"สต็อกต่ำ" นับยังไง: ระบบจัดกลุ่มเครื่องตาม ยี่ห้อ + รุ่น แล้วนับเฉพาะเครื่องที่ สถานะ "พร้อมขาย" — รุ่นที่เหลือ 2 เครื่องหรือน้อยกว่า จะถูกนับว่าสต็อกต่ำ (การ์ดแสดงได้สูงสุด 10 รุ่น)
การเรียงลำดับ: รุ่นที่เหลือ น้อยที่สุดขึ้นก่อน เพราะเป็นรุ่นที่ต้องสั่งเพิ่มด่วนที่สุด
⚠️ เดิมถ้ามีรุ่นสต็อกต่ำเกิน 10 รุ่น การ์ดจะเลือกมาแสดง 10 รุ่นแบบไม่แน่นอน เปิดดูคนละครั้งอาจได้คนละชุด ทำให้รุ่นที่ใกล้หมดจริงหายไปจากการ์ดโดยไม่มีอะไรบอก ตอนนี้ได้ชุดเดิมทุกครั้งและเรียงตามความเร่งด่วนจริง
💡 เครื่องที่ขายแล้ว จองแล้ว หรืออยู่ระหว่างซ่อม ไม่ถูกนับ เพราะขายต่อไม่ได้
✅ เข้าหน้าคลังตรง ๆ จากเมนูด้านซ้าย ยังเห็นทุกรายการเหมือนเดิมทุกประการ การกรองจะเกิดเฉพาะตอนกดมาจากการ์ดเท่านั้น และกดปุ่มล้างเมื่อไรก็กลับมาเห็นทั้งหมด
📍 หน้า: /accessories
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: จัดการสินค้าประเภทอุปกรณ์เสริม เช่น เคส สายชาร์จ หูฟัง กระจก
คุณสมบัติ:
ฟิลด์สินค้าอุปกรณ์เสริม:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ชื่อสินค้า | ชื่อสินค้า | ✅ |
| ยี่ห้อ | เลือกจาก Master Brands | ❌ |
| หมวดหมู่ | เคส, สายชาร์จ, หูฟัง ฯลฯ | ✅ |
| จำนวน (Stock) | จำนวนชิ้นในคลัง | ✅ |
| ราคาทุน | ต้นทุนสินค้า | ✅ |
| ราคาขาย | ราคาที่ตั้งขาย | ✅ |
| สาขา | สาขาที่เก็บสินค้า | ✅ |
| สี | สีของอุปกรณ์ | ❌ |
| บาร์โค้ด | รหัสสินค้า | ❌ |
| หมายเหตุ | รายละเอียดเพิ่มเติม | ❌ |
| ซื้อจาก | ผู้จัดหา (ร้านส่ง) หรือ ลูกค้า (รับซื้อต่อ) — เลือกได้อย่างเดียว | ❌ |
ประเภทธุรกรรมอุปกรณ์เสริม:
IN — รับสินค้าเข้าคลังOUT — ตัดสต็อกออกSELL — ขายสินค้า (ผ่าน POS)💡 เคล็ดลับ: Category เริ่มต้นของระบบ ได้แก่ เคส, ฟิล์ม/กระจก, สายชาร์จ, หูฟัง, Power Bank, อื่นๆ
ตอนเพิ่ม/แก้ไขสินค้า มีสวิตช์ "นับสต๊อกสินค้านี้" — ปิดสวิตช์แล้วสินค้านั้นจะขายได้เรื่อย ๆ ไม่ตัดจำนวน ไม่แจ้งเตือนของหมด และอยู่บนหน้าขายตลอดแม้จำนวนเป็น 0
เหมาะกับของเบ็ดเตล็ดที่ขายประจำแต่ไม่คุ้มจะนับ (ฟิล์ม สายชาร์จถูก ๆ ค่าบริการย่อย) รายละเอียดการใช้งานที่หน้าขาย + การเคาะราคา อยู่ที่ §6.12
ค่าเริ่มต้นคือ นับสต๊อก — สินค้าที่มีอยู่แล้วทั้งหมดทำงานเหมือนเดิมทุกประการ
ช่อง "ซื้อจาก" ทำงานแบบเดียวกับหน้าสต็อกมือถือทุกประการ — เลือกผู้จัดหาหรือลูกค้าได้อย่างใดอย่างหนึ่ง พร้อมปุ่มเพิ่มผู้จัดหา/ลูกค้าใหม่ในตัว ดูรายละเอียดเต็มที่ §3.1
⚠️ เก็บนับจากวันที่เปิดใช้ฟีเจอร์นี้ (24 ส.ค. 2569) เป็นต้นไปเท่านั้น อุปกรณ์เสริมเก่าที่มีอยู่แล้วไม่มีข้อมูลผู้ขายให้ย้อนดู
เวลากดลบอุปกรณ์เสริม ระบบ ซ่อนสินค้านั้นไว้ (ไม่ได้ลบทิ้ง เพื่อเก็บประวัติการขาย/การเคลื่อนไหวของสต๊อก)
เดิม (ก่อน 2 ต.ค. 2569) รหัสของสินค้าที่ลบไปแล้วจะ ใช้ใหม่ไม่ได้ และค้นหาก็ไม่เจอ — ตอนนี้แก้แล้ว ไม่ต้องทำอะไรเพิ่ม
📍 เข้าจากไหน: หน้าอุปกรณ์เสริม /accessories → ปุ่มเมนู 3 จุดของแถว → "พิมพ์ฉลาก"
· หน้าคลังอะไหล่ /spare-parts → ไอคอนเครื่องพิมพ์สีม่วง ในแถว
ฉลากที่พิมพ์มี 4 อย่างเสมอ: ชื่อสินค้า · โค้ด (QR หรือ Barcode) · รหัสสินค้า (SKU) · ราคาขาย โค้ดที่ฝังอยู่คือ SKU ตัวเดียวกับที่ใช้ยิงตอนนับสต๊อกและตอนขาย
| ใช้เมื่อไร | |
|---|---|
| QR Code (ค่าเริ่มต้น) | แนะนำสำหรับฉลากเล็ก — เก็บรหัสยาวได้ ทนการพิมพ์ที่ไม่คม ใช้ได้ทุกขนาดฉลาก |
| Barcode (Code 128) | ใช้เมื่อเครื่องสแกนของร้านอ่านได้เฉพาะบาร์โค้ดเส้น — ต้องใช้ฉลากที่กว้างพอ (ดูตารางข้างล่าง) |
บาร์โค้ดเส้นกินที่ตามความยาวรหัส และแคบกว่าค่าหนึ่งแล้วเครื่องสแกนอ่านไม่ออก ระบบจึงคำนวณให้แล้วว่ารหัสไหนใส่ลงฉลากขนาดไหน
| ขนาดฉลาก | รหัสยาวได้ประมาณ |
|---|---|
| 30 × 20 มม. | ~5 ตัวอักษร (สั้นมาก แทบใช้กับบาร์โค้ดไม่ได้) |
| 40 × 25 มม. | ~8 ตัวอักษร |
| 50 × 30 มม. | ~12 ตัวอักษร |
| 70 × 40 มม. | ~19 ตัวอักษร ← ใช้ตัวนี้ถ้ารหัสร้านคุณยาว |
⚠️ ถ้ารหัสยาวเกิน ระบบจะขึ้นกล่องสีส้มและ ปิดปุ่มพิมพ์ พร้อมบอกว่าต้องใช้ความกว้างเท่าไร มีที่ว่างเท่าไร และควรเลือกฉลากขนาดไหนแทน เดิมระบบยอมพิมพ์ให้โดยย่อบาร์โค้ดลงเงียบ ๆ จนสแกนไม่ได้ — ฉลากที่พิมพ์แล้วสแกนไม่ได้ เสียทั้งกระดาษและเวลาที่หน้าเคาน์เตอร์ จึงเปลี่ยนเป็นบอกก่อนพิมพ์
💡 รหัสที่มี ภาษาไทยหรืออักขระพิเศษ ทำเป็นบาร์โค้ดเส้นไม่ได้เลย (ข้อจำกัดของ Code 128) — ใช้ QR Code แทน
ใต้ปุ่มพิมพ์ (เฉพาะโหมด Barcode) มีลิงก์ "พิมพ์แล้วสแกนไม่ได้?" กดแล้วจะมีขั้นตอนให้ตรวจ 5 ข้อ ข้อที่สำคัญที่สุดคือ มาตราส่วน (Scale) ต้องเป็น "ค่าเริ่มต้น" หรือ 100%
⚠️ Chrome ตั้งค่ามาตราส่วนเป็น "พอดีกับพื้นที่ที่พิมพ์ได้" มาตั้งแต่ต้น ซึ่งย่อ-ขยายหน้าเอง ระบบสั่งขนาดแท่งไปให้พอดีกับหัวพิมพ์แล้ว แต่ถ้าเบราว์เซอร์ย่อทับ ความกว้างของแท่งจะเพี้ยน ค่านี้แก้จากโปรแกรมไม่ได้ ต้องตั้งที่หน้าต่างพิมพ์เอง ครั้งเดียวต่อเครื่อง แล้วเบราว์เซอร์จำให้
| โหมด | ใช้กับ |
|---|---|
| เครื่องพิมพ์ฉลาก (ค่าเริ่มต้น) | 1 ฉลาก = 1 หน้า — ตั้งขนาดกระดาษในหน้าต่างพิมพ์ให้ตรงกับขนาดฉลาก |
| กระดาษ A4 | พิมพ์หลายฉลากต่อแผ่นแล้วตัดเอง มีเส้นประบอกรอยตัด |
📍 หน้า: /stock-count (รายการรอบนับ) + /stock-count/[id] (หน้านับ)
👤 สิทธิ์: เปิดรอบ / ปิดรอบ = เจ้าของร้าน · ผู้ดูแล · ผู้จัดการ — ส่วน การเดินยิงนับ พนักงานทุกคนทำได้
วัตถุประสงค์: ตรวจของจริงเทียบกับตัวเลขในระบบ — หาของหาย ตรวจความถูกต้องของข้อมูล และเก็บหลักฐานไว้ให้ผู้สอบบัญชี
⭐ ของที่ปิด "นับสต๊อกสินค้านี้" ไว้ จะไม่ถูกลากเข้ารอบนับอีกแล้ว (24 ส.ค. 2569) เดิมเปิดรอบนับแล้วใบนับมีรายการพวกนี้ปนมาด้วย · พนักงานเดินนับ กรอกเลขลงไป แล้วระบบข้ามทิ้งเงียบ ๆ ตอนกดปิดรอบ โดยไม่มีอะไรบอกว่าทำไม = เสียแรงฟรี · ตัวอย่างที่วัดได้จริง: ร้านหนึ่งมี 48 จาก 240 รายการ ที่ไม่ควรอยู่ในใบนับ · 📌 รอบที่เปิดค้างไว้ก่อนหน้านี้ ไม่ต้องทำอะไร — กดปิดรอบได้ตามปกติ จำนวนสต๊อกไม่ถูกแตะ สิ่งที่เพี้ยนคือรายการบนใบนับเท่านั้น ไม่ใช่ตัวเลขของจริง
3 ประเภทการนับ:
| ประเภท | ใช้เมื่อไหร่ |
|---|---|
| FULL | นับสิ้นปี — ทุกรายการในร้าน |
| CYCLE | นับเฉพาะหมวด/ยี่ห้อ/ตำแหน่งเก็บ — ทำได้ทุกเดือน |
| SPOT_CHECK | ตรวจสุ่ม |
ยิง 1 ครั้ง = นับเพิ่ม 1 ชิ้น ยิงซ้ำชิ้นเดิมก็บวกไปเรื่อย ๆ (1 → 2 → 3) ไม่ต้องพิมพ์ตัวเลขเอง
ยิงได้ 2 ทาง:
| ทาง | ใช้ยังไง |
|---|---|
| เครื่องยิงบาร์โค้ด USB (แนะนำ) | เสียบคอมแล้วยิงได้เลย ไม่ต้องตั้งค่าอะไร — ระบบจับ Enter ที่เครื่องยิงส่งท้ายให้เอง แล้ว ล้างช่องให้อัตโนมัติ ยิงชิ้นถัดไปต่อได้ทันที |
| กล้องมือถือ | กดปุ่ม "ใช้กล้องมือถือยิงแทน" — กล้องเปิดค้าง ยิงรัวได้ ไม่ต้องกดเปิดใหม่ทุกชิ้น มีเสียงและการสั่นบอกว่ายิงติด (ปิดเสียงได้) |
💡 บาร์โค้ดที่ใช้ยิงคือ SKU (รหัสสินค้า) ซึ่งเป็นรหัสเดียวกับที่ปุ่ม "พิมพ์ฉลาก" ที่หน้าอุปกรณ์เสริมและหน้าอะไหล่พิมพ์ออกมา — ติดฉลากไว้ที่ของแล้วยิงได้เลย ส่วน มือถือ ยิงบาร์โค้ด IMEI บนกล่องหรือตัวเครื่อง
แถบบนสุดบอกว่าระบบพร้อมรับการยิงหรือยัง — ถ้าเผลอกดที่อื่นจนช่องเสียโฟกัส ระบบจะดึงกลับให้เอง เพราะถ้าโฟกัสหลุด การยิงจะหายไปเฉย ๆ โดยไม่มีอะไรเตือน
| ชนิด | ยิงซ้ำเครื่อง/ชิ้นเดิม |
|---|---|
| อุปกรณ์เสริม · อะไหล่ | บวกเพิ่มทีละ 1 (นับจำนวนชิ้น) |
| มือถือ | ขึ้นว่า "เครื่องนี้ยิงไปแล้ว" ไม่บวกเพิ่ม |
⚠️ ทำไมมือถือไม่บวก — ในระบบ 1 รายการ = เครื่องจริง 1 เครื่อง ผูกกับเลข IMEI ถ้ายิงเครื่องเดิมซ้ำแล้วนับเป็น 2 เท่ากับนับเครื่องเดียวเป็นสองเครื่อง สต๊อกจะเพี้ยนทันที
| ข้อความ | แปลว่า |
|---|---|
| ไม่มีรหัสนี้ในระบบ | ยังไม่เคยบันทึกของชิ้นนี้เข้าร้าน |
| เป็นของสาขาอื่น | มีในร้าน แต่อยู่คนละสาขากับรอบนับนี้ (บอกชื่อสาขาให้ด้วย) |
| มีในสาขานี้ แต่ไม่อยู่ในรอบนับ | เช่นเพิ่งขายไป หรือเพิ่งปิดใช้งานหลังเปิดรอบ |
| รหัสสั้นเกินไป / ไม่มีรหัส | ของชิ้นนั้นไม่มี SKU จึงยิงไม่ติด |
⚠️ ของที่ไม่มีรหัสสินค้า (SKU) จะยิงไม่ติดตลอดกาล ต้องกรอกจำนวนเองทีละรายการ หน้านับจะขึ้นแถบเตือนบอกว่ามีกี่รายการ พร้อมปุ่มกรองให้ดูว่ารายการไหนบ้าง — อย่าข้ามแถบนี้ ไม่งั้นจะยิงจนจบแล้วเชื่อว่าครบ ทั้งที่มีของที่ไม่มีวันถูกยิงติดค้างอยู่ แล้วของพวกนั้นจะถูกบันทึกว่า "หาย" ตอนปิดรอบ
/stock-count → กด + เริ่มรอบนับใหม่ → เลือกประเภท📊 ส่งออกผลการนับเป็นไฟล์ Excel ⭐ ใหม่ 23 ส.ค. 2569
ปุ่ม "ส่งออก Excel" อยู่มุมขวาบนของหน้ารอบนับ — กดได้ทั้งตอนที่ยังนับไม่เสร็จและหลังปิดรอบแล้ว
ไฟล์มี 2 แผ่น
จุดที่ควรรู้
ระบบ ไม่ได้เอาจำนวนที่นับได้ไปทับยอดตรง ๆ แต่เอา "ส่วนต่างที่พบตอนนับ" ไปปรับกับยอดปัจจุบัน
ตัวอย่าง เช้านับได้ 8 ชิ้น (ระบบบอกว่าควรมี 10 → ขาดอยู่ 2) → บ่ายขายไป 3 ชิ้น → เย็นกดปิดรอบ ระบบจะปรับด้วยส่วนต่าง −2 กับยอดปัจจุบัน (7) → เหลือ 5 ชิ้น ซึ่งตรงกับของจริง ถ้าเอาจำนวนที่นับได้ไปทับ จะกลายเป็น 8 ชิ้น = การขายตอนบ่ายหายไป และรอบนับครั้งหน้าจะรายงานว่า "หาย 3"
ไม่ต้องรีบปิดรอบให้ทันวันเดียว — นับค้างไว้แล้วกลับมาปิดวันหลังได้ ยอดยังถูก
⚠️ ถ้ามีคนขยับยอดของรายการเดียวกันในจังหวะที่กำลังกดปิดรอบพอดี ระบบจะไม่บันทึกอะไรเลยแล้วบอกให้กดปิดรอบอีกครั้ง — ปลอดภัยกว่าการเขียนตัวเลขที่ไม่ตรงกับที่แสดงให้ดูก่อนยืนยัน
| ตัวเลือก | ผลลัพธ์ |
|---|---|
| ปิดรอบอย่างเดียว ไม่แก้สต๊อก (ค่าตั้งต้น) | บันทึกผลการนับไว้เป็นรายงาน ตัวเลขสต๊อกไม่ขยับ — เหมือนเดิมทุกประการ |
| ปิดรอบและปรับสต๊อกตามที่นับได้ | เขียนจำนวนจริงทับตัวเลขในระบบ พร้อมบันทึกการเคลื่อนไหวไว้ให้ตรวจย้อนหลังได้ |
ก่อนกดยืนยัน ระบบจะแสดงให้ดูก่อนเสมอว่าจะเปลี่ยนอะไรบ้าง — รายการไหน จาก 5 → 1 รวมกี่ชิ้น และของไหนที่ระบบ ข้ามไม่ปรับ พร้อมบอกว่าข้ามเพราะอะไร
ระบบข้ามไม่ปรับยอดใน 3 กรณี:
⚠️ มือถือเป็นการรายงานอย่างเดียว — ระบบบอกว่าเครื่องไหนหาย/เกิน แต่ ไม่เปลี่ยนสถานะเครื่องให้อัตโนมัติ ต้องไปจัดการที่หน้าสต็อกมือถือเอง เพราะการตัดเครื่องออกจากสต๊อกเป็นเรื่องที่ต้องตัดสินใจทีละเครื่อง
หน้าปิดรอบแยก 2 ตัวเลขนี้ออกจากกัน เพราะแก้คนละทาง:
⚠️ ถ้าปิดรอบทั้งที่ยังนับไม่ครบ รายการที่เหลือจะถูกบันทึกว่าหายทั้งจำนวน ระบบเตือนเรื่องนี้ก่อนให้ยืนยันเสมอ
ข้อดีของการนับสต๊อก:
⚠️ ห้ามมีรอบนับเปิดพร้อมกัน 2 รอบในสาขาเดียวกัน — ระบบจะบอกว่ามีรอบเปิดอยู่ พร้อมปุ่มพาไปที่รอบนั้น ⚠️ ปิดรอบแล้วแก้ไม่ได้อีก (เก็บไว้เป็นหลักฐาน)
เปิดรอบผิดสาขา · ผิดชนิด · หรือเปิดซ้ำโดยไม่ตั้งใจ — เดิมเอาออกไม่ได้เลย ต้องกด "ปิดรอบนับ" ซึ่งทำให้รอบขยะกลายเป็นรอบที่ "เสร็จสิ้น" ปนอยู่ในประวัติ และรอบที่ค้างจะล็อกสาขานั้นไม่ให้เปิดรอบใหม่ได้
วิธีทำ — เปิดหน้ารอบนั้น (/stock-count/[id]) → กดปุ่มแดง "ยกเลิกรอบนับ" มุมขวาบน
| ใครทำได้ | ผู้จัดการขึ้นไป (แคชเชียร์/ช่างไม่เห็นปุ่มนี้) |
| ต้องกรอกอะไร | เหตุผล อย่างน้อย 10 ตัวอักษร — แตะชิปสำเร็จรูปได้ (เปิดผิดสาขา · เปิดรอบซ้ำ · ยกเลิกการตรวจ · อื่น ๆ) แล้วพิมพ์เพิ่ม |
| ก่อนกดยืนยันจะเห็น | รอบนี้มีกี่รายการ · นับไปแล้วกี่รายการ |
สิ่งที่เกิดขึ้น
/audit-logs → ประเภท "รอบนับสต๊อก") ว่าใครยกเลิก เพราะอะไร เมื่อไร📍 หน้า: /stock-transfer
👤 สิทธิ์: ขอโอน = ทุก role; อนุมัติ/ยกเลิก = MANAGER+
วัตถุประสงค์: Multi-branch ใช้ได้แล้ว แต่ก่อนหน้านี้ โอนของระหว่างสาขาไม่ได้ — ของอยู่สาขา A ลูกค้าอยากซื้อที่สาขา B → ต้องลบ-สร้างใหม่ (ไม่มี audit trail). ระบบ Stock Transfer แก้ปัญหานี้
Workflow 3 stages:
| สถานะ | คำอธิบาย | Action |
|---|---|---|
| PENDING | ขอโอน รอ manager ของสาขาต้นทางอนุมัติ | manager กด อนุมัติ + ส่ง → IN_TRANSIT |
| IN_TRANSIT | ส่งของแล้ว — สาขาต้นทางตัดสต็อก/RESERVED ไว้ | manager ปลายทางกด รับเข้า เมื่อของมา → RECEIVED |
| RECEIVED | ของมาถึงปลายทาง — สาขาปลายทางได้สต็อกเพิ่ม | (จบ — เลขที่ใบโอน TR-XXX-XXXX-XXXX จบ lifecycle) |
| CANCELLED | ยกเลิก (PENDING → cancel ได้ทันที / IN_TRANSIT → restore stock ที่ต้นทาง) | (จบ) |
สร้างคำขอโอน:
/stock-transfer → กด ขอโอนสินค้า (ต้องมี ≥ 2 สาขา)Auto stock movement:
branchId + status=AVAILABLE⭐ แก้แล้ว 16 ส.ค. 2569: ชื่อสินค้าคนละแบบระหว่างสาขา ไม่ทำให้รับเข้าพังอีก
เดิมระบบจับคู่ด้วย ชื่อ + รหัส พร้อมกัน แต่ฐานข้อมูลบังคับห้ามรหัสซ้ำในสาขาเดียวกัน (ไม่สนชื่อ)
→ ถ้าสาขาปลายทางมีของ รหัสเดียวกันแต่ชื่อสะกดต่างกัน (เช่น จอ A05S กับ A05S)
ระบบจะหาไม่เจอ แล้วพยายามสร้างรายการใหม่ → ชนกฎห้ามรหัสซ้ำ → ขึ้น "เกิดข้อผิดพลาดภายในระบบ"
และกดกี่ครั้งก็พังเหมือนเดิม แก้เองไม่ได้เลย
ตอนนี้จับคู่ด้วย รหัสสินค้าอย่างเดียว ตรงกับกฎของฐานข้อมูล ทำให้:
ถ้าเจอปัญหานี้ก่อนอัปเดต — แก้ชื่อที่สาขาปลายทางให้ตรงกับต้นทางแล้วกดรับเข้าใหม่จะผ่านทันที · ของไม่หายระหว่างนั้น เพราะทุกครั้งที่พังระบบย้อนรายการทั้งหมดกลับ ใบยังอยู่สถานะ "กำลังโอน" ครบ
transferNumber format: TR-{branchCode}-{BEyear}-{seq:04} — running serial ตาม docSerial system
Tabs: ทั้งหมด / ขาเข้า (รับ) / ขาออก (ส่ง) — filter ดูตามทิศทาง
📍 หน้า: /purchase
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: บันทึกการรับซื้อมือถือมือสองจากลูกค้า พร้อมตีราคา และออกใบรับซื้อ
ขั้นตอนรับซื้อมือถือ:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ลูกค้า | เลือกจากฐานข้อมูล หรือเพิ่มใหม่ | ✅ |
| ประเภทอุปกรณ์ | มือถือ, แท็บเล็ต ฯลฯ | ✅ |
| ยี่ห้อ | ยี่ห้อสินค้า | ✅ |
| รุ่น | รุ่นสินค้า | ✅ |
| ความจุ | หน่วยความจำ | ✅ |
| สี | สีสินค้า | ✅ |
| IMEI/Serial | หมายเลขเครื่อง (สแกน Barcode ได้) | ✅ |
| สภาพ | สภาพเครื่อง | ✅ |
| ราคารับซื้อ | ราคาที่จ่ายให้ลูกค้า | ✅ |
| ราคาตั้งขาย | ราคาที่จะขายต่อ | ✅ |
| Checklist อุปกรณ์ | ตรวจสอบอุปกรณ์แนบมา | ❌ |
| รูปภาพ | ถ่ายรูปสภาพเครื่อง | ❌ |
| หมายเหตุ | เงื่อนไขพิเศษ | ❌ |
คุณสมบัติเพิ่มเติม:
⚠️ ข้อควรระวัง — ตรวจเครื่องด้วยตนเองก่อนรับ
ระบบ MobileHub ไม่ได้ ตรวจ iCloud lock / Find My iPhone / blacklist global โดยอัตโนมัติ — checklist "ปลด Apple ID แล้ว" / "Factory Reset แล้ว" ในฟอร์มเป็นการ ยืนยันจากผู้ขาย เท่านั้น (self-declaration)
กรุณาตรวจด้วยตนเองก่อนจ่ายเงินรับเครื่อง:
หลักฐานทางกฎหมาย: ใบรับซื้อมือถือมือสองมีคำรับรองผู้ขาย 5 ข้อ (ไม่ใช่ของโจร / ไม่ติด iCloud / ไม่ติดผ่อน / IMEI ไม่ blacklist / ยินยอมรับผิดทางอาญา ม.357 ถ้าเป็นเท็จ) + ลายเซ็น 3 ฝ่าย + สำเนาบัตรประชาชน — ใช้ป้องกันร้านจากข้อหา "รับของโจร" ได้
💡 เคล็ดลับ: หลังรับซื้อสำเร็จ สินค้าจะปรากฏในหน้า สต็อกมือถือ โดยอัตโนมัติ พร้อมข้อมูลครบถ้วน
อาการ: ใบรับซื้อขึ้นสถานะ "เข้าสต็อก" แล้ว แต่ค้นในคลังไม่เจอเครื่องนั้น
เกิดจาก: ตอนกด "เข้าสต็อก" ระบบสร้างเครื่องในคลังไม่สำเร็จ สาเหตุที่พบบ่อยคือ IMEI ซ้ำกับเครื่องที่มีอยู่แล้ว หรือ จำนวนสินค้าเต็มโควตาแพ็คเกจ
⚠️ เดิมแก้เองไม่ได้เลย — ใบที่ถึงสถานะนี้จะถูกล็อกไม่ให้เดินสถานะต่อ และยังถูกซ่อนจากรายการตั้งต้นของหน้าด้วย จึงมองไม่เห็นว่ามีใบค้างอยู่
ตอนนี้:
✅ ใบที่เข้าสต็อกสำเร็จแล้ว (มีเครื่องในคลังจริง) ยังถูกซ่อนและล็อกเหมือนเดิมทุกประการ ปุ่มกู้จะขึ้นเฉพาะใบที่ไม่มีเครื่องผูกอยู่จริงเท่านั้น
📍 เส้นทาง: /repair-intake → /repair-checklist → /repair-documents (preview)
👤 สิทธิ์: OWNER, ADMIN, MANAGER, SALESTECH (ช่างธรรมดา ไม่เห็น เมนูรับเครื่อง)
วัตถุประสงค์: รับเครื่องจากลูกค้า บันทึกข้อมูล + เช็คสภาพก่อนซ่อม + ออกใบรับซ่อมพร้อมพิมพ์ ภายในชุดเดียวกัน (ไม่ต้องสลับหน้าหลายครั้ง)
ที่ /repair-intake กด "+ รับเครื่อง" → modal เปิด
ฟิลด์ในฟอร์ม:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ลูกค้า | เลือกหรือเพิ่มใหม่ (ค้นหาด้วยชื่อ/เบอร์) | ✅ |
| 🚀 Quick-pick template | (ไม่บังคับ) เลือก template งานยอดฮิต → auto-fill ยี่ห้อ/รุ่น/ค่าแรง/อาการ | ❌ |
| ประเภทเครื่อง | มือถือ / แท็บเล็ต / สมาร์ทวอทช์ / หูฟัง / อื่นๆ | ✅ |
| ยี่ห้อ | จาก Master Brands ของสาขา | ✅ |
| รุ่น | จาก Master Models (กรองตามยี่ห้อ) | ✅ |
| IMEI | ตัวเลข 15 หลัก (มี 3-layer guard กันพิมพ์ตัวอักษร) | ❌ — เครื่องที่ไม่มี IMEI เว้นไว้แล้วกรอก SN แทน |
| Serial Number (SN) | เลขซีเรียลของเครื่องที่ไม่มี IMEI เช่น แท็บเล็ต WiFi · สมาร์ทวอทช์ · หูฟัง (พิมพ์ได้ทั้งตัวเลขและตัวอักษร สูงสุด 64 ตัว เช่น F2LX1234ABCD) | ❌ |
| 🔒 รหัสปลดล็อกเครื่อง ⭐ ใหม่ 16 ส.ค. 2569 | รหัสที่ช่างต้องใช้เปิดเครื่องเพื่อทดสอบ — ใส่ได้ทุกแบบ: ตัวเลข PIN · รหัสตัวอักษร · รูปแบบลากนิ้ว (เช่น L → ↓ → →) · หรือแตะชิปสำเร็จรูป "ไม่มีรหัส" / "ลายนิ้วมือ" | ❌ |
| 📅 วันนัดรับเครื่อง ⭐ ใหม่ 23 ส.ค. 2569 | วันที่นัดลูกค้ามารับ — เลือกจากปฏิทิน พ.ศ. หรือ แตะชิปสำเร็จรูป: วันนี้ / พรุ่งนี้ / +2 วัน / +3 วัน / +7 วัน | ❌ |
| 🕐 เวลานัด ⭐ ใหม่ 23 ส.ค. 2569 | ช่องแยกข้าง ๆ วันนัด — พิมพ์ตัวเลขอย่างเดียว เช่นพิมพ์ 1430 ระบบใส่ทวิภาคให้เองเป็น 14:30 (ตัวอักษรพิมพ์ไม่ได้) · เลือกวันแล้วไม่พิมพ์เวลา ระบบใส่ 17:00 น. ให้ | ❌ |
🔒 เรื่องรหัสปลดล็อกเครื่อง — สิ่งที่ระบบทำและไม่ทำ (ใหม่ 16 ส.ค. 2569)
เดิมไม่มีช่องให้ใส่ ร้านจึงพิมพ์รวมไว้ในช่อง "อาการเสีย" ซึ่งทำให้รหัสไปโผล่หลายที่โดยไม่ตั้งใจ — รวมถึงใบรับซ่อมที่ลูกค้าถือกลับบ้าน และ หน้าติดตามงานซ่อมออนไลน์ ที่ใครก็เปิดดูได้ถ้ารู้เลขใบ
📅 วัน–เวลานัดรับเครื่อง — ลูกค้าเช็คเองได้ ไม่ต้องโทรถาม (ใหม่ 23 ส.ค. 2569)
1430
ระบบใส่ทวิภาคให้เองเป็น 14:30 ไม่ต้องพิมพ์เครื่องหมาย · พิมพ์ตัวอักษรไม่เข้าเลย
· ใส่เวลาเกินจริง (เช่น 25:99) ระบบเตือนใต้ช่องทันที
💡 ใช้ได้ทั้งบนคอมและแท็บเล็ต — เดิมช่องเวลาอยู่ในปฏิทิน ทำให้บนแท็บเล็ตแป้นพิมพ์
เด้งขึ้นแล้วหายทันที พิมพ์ไม่ได้ (แก้แล้ว 23 ส.ค. 2569 โดยแยกช่องออกมา)💡 ถ้ายังไม่มี "รุ่น" ในระบบ เพิ่มได้จากหน้านี้เลย ⭐ NEW — ไม่ต้องปิดฟอร์มไปเพิ่มที่ ข้อมูลหลัก › รุ่น ก่อนแล้วกลับมากรอกใหม่
เลือก ยี่ห้อ ก่อน (ปุ่มจะยังกดไม่ได้ถ้ายังไม่เลือก เพราะรุ่นต้องผูกกับยี่ห้อเสมอ)
กดปุ่ม + สีเขียว ข้างช่องรุ่น
พิมพ์ชื่อรุ่น → กด เพิ่มรุ่น (หรือกด Enter)
ระบบบันทึกเข้าข้อมูลหลักของสาขานั้น แล้วเลือกให้อัตโนมัติ กรอกต่อได้เลย ครั้งหน้าก็มีให้เลือกในดรอปดาวน์
ปุ่ม + นี้มีในหน้าอื่นด้วย — ทุกที่ที่ต้องเลือกข้อมูลหลักระหว่างทำงานกับลูกค้า
| หน้า | เพิ่มได้จากในฟอร์ม |
|---|---|
| รับเครื่องซ่อม · รายการงานซ่อมทั้งหมด | ยี่ห้อ · รุ่น |
| รับซื้อ-ตีราคา | ยี่ห้อ · รุ่น · ความจุ · สี |
| สต็อกมือถือ | ยี่ห้อ · รุ่น · สี · ความจุ |
| อุปกรณ์เสริม | ยี่ห้อ |
| คลังอะไหล่ | หมวดหมู่อะไหล่ · ตำแหน่งจัดเก็บ |
⚠️ ที่ไม่มีปุ่ม + โดยตั้งใจ — สถานะงานซ่อม · สถานะสินค้า · วิธีชำระเงิน · ประเภทหักเงินเดือน · หมวดค่าใช้จ่าย · ระยะประกัน
พวกนี้เป็นการตั้งค่าระบบที่กระทบรายงานและขั้นตอนการทำงานทั้งร้าน ต้องให้ผู้ดูแลตั้งที่ ข้อมูลหลัก เท่านั้น
| รูปถ่ายเครื่อง | สูงสุด 10 รูป (ลาก-วาง ขนาด ≤ 5MB/รูป) | ❌ |
| อาการเสีย / ปัญหาที่พบ | ลูกค้าแจ้ง (Textarea) | ✅ |
| ราคาประเมิน (เบื้องต้น) | ช่างปรับภายหลังตามอาการจริง | ❌ |
| หมายเหตุ | เงื่อนไขพิเศษ | ❌ |
| ลายเซ็นลูกค้า | canvas เซ็น (mouse/touch) — เก็บใน Repair.intakeSignature | ❌ — แนะนำให้เซ็น |
Validation: ถ้าฟิลด์ที่บังคับขาด → toast แดง "ข้อมูลไม่ถูกต้อง" รวมทุกฟิลด์ที่ขาดเป็น bullet list + แต่ละ Select มี error message ใต้ label. แก้ไขฟิลด์ใดก็ตาม → error ของฟิลด์นั้นหายอัตโนมัติ
กด "บันทึก" → ระบบสร้างงานซ่อม → toast เขียว "รับเครื่องสำเร็จ — ต่อไปเช็คสภาพเครื่องก่อนซ่อม" → redirect อัตโนมัติไปขั้นที่ 2
ระบบพาไป /repair-checklist?repairId=...&autoOpen=PRE_REPAIR — modal เปิดเองทันที (ไม่ต้องคลิก)
สิ่งที่ทำ:
RepairChecklist.customerSignature)กด "บันทึก" → toast "บันทึกสำเร็จ — เช็คก่อนซ่อม + ออกใบรับซ่อมเรียบร้อย" → redirect ไปขั้นที่ 3
ระบบพาไป /repair-documents?repairId=...&autoPreview=intake — modal ตัวอย่างเอกสารเปิดเองพร้อมเนื้อหาครบ:
ทั้งหมด อยู่ใน 1 หน้า A4 (ใช้ .intake-receipt CSS scope compactions) → กดปุ่ม "พิมพ์" → printer dialog เปิด
ทำไมต้อง 3 ขั้น:
💡 Tip — Skip checklist: ถ้างานเร่งและไม่ต้องการ checklist (เช่น เปลี่ยนสาย charger 5 นาที) ขั้น 2 ปิด modal ทิ้งได้ — ระบบยังคงสร้างงานซ่อมไว้ที่ /repair แล้ว แค่ไม่มี checklist + ไม่ออกใบให้อัตโนมัติ. สามารถออกใบรับซ่อมเองภายหลังที่ /repair-documents (ใบจะไม่มี checklist section)
⚠️ หมายเหตุ: ช่างที่มี Role TECHNICIAN เท่านั้น ไม่เห็น เมนูรับเครื่อง — เห็นเฉพาะงานที่ถูกมอบหมายในเมนู งานช่าง
📍 หน้า: /technician-repairs
👤 สิทธิ์: OWNER, ADMIN, MANAGER, TECHNICIAN, SALESTECH
วัตถุประสงค์: ดูงานซ่อมที่ได้รับมอบหมาย อัปเดตสถานะ เบิกอะไหล่
สถานะงานซ่อม:
| สถานะ | สี | ความหมาย |
|---|---|---|
| PENDING (รับเครื่อง) | เทา | รับเครื่องแล้ว รอดำเนินการ |
| QUOTED (เสนอราคาแล้ว) | ม่วง | ประเมินราคา รอลูกค้าอนุมัติ |
| APPROVED (อนุมัติแล้ว) | ส้ม | ลูกค้าอนุมัติแล้ว พร้อมซ่อม |
| IN_PROGRESS (กำลังซ่อม) | ฟ้า | กำลังซ่อมอยู่ |
| WAITING_PARTS (รออะไหล่) | เหลือง | รออะไหล่ส่งมาก่อนซ่อมต่อ |
| COMPLETED (เสร็จแล้ว) | เขียว | ซ่อมเสร็จ รอลูกค้ามารับ |
| DELIVERED (ส่งมอบแล้ว) | ฟ้าทะเล | ส่งคืนลูกค้าแล้ว |
| CANCELLED (ยกเลิก) | แดง | ยกเลิก |
💡 ระบบแสดง badge สถานะเป็นภาษาไทยทั้งระบบ (/repair, /repair-intake, /technician-repairs, /repair-documents, /repair-warranty, /reports ฯลฯ) — ทำผ่านไฟล์กลาง lib/statusLabels.js
ขั้นตอนอัปเดตงานซ่อม:
การเบิกอะไหล่:
⭐ ใหม่ 16 ส.ค. 2569 — ปิดงานซ่อมแล้วระบบตัดอะไหล่ให้เอง ไม่ต้องกดปุ่มเบิกอีก
เมื่อเปลี่ยนสถานะเป็น "ซ่อมเสร็จ" หรือ "ส่งมอบแล้ว" ระบบจะตัดอะไหล่ที่ลงไว้ในใบงาน ออกจากคลังให้อัตโนมัติ พร้อมบันทึกลงประวัติว่าของไปกับใบซ่อมใบไหน
⚠️ เดิมระบบไม่เคยตัดให้เลย ต้องกดปุ่ม "เบิกอะไหล่" เองทุกครั้ง และปุ่มนั้นไม่แสดง ตอนรับงานใหม่ ต้องกลับเข้าไปกด "แก้ไข" อีกรอบถึงจะเจอ — ร้านที่ไม่รู้จึงลงอะไหล่ในใบงาน ครบแต่สต๊อกไม่เคยลด ถ้าร้านของคุณเคยเจอแบบนี้ ทีมงานมีรายการให้ว่าต้องปรับยอดตัวไหนบ้าง
| สถานการณ์ | ระบบทำอะไร |
|---|---|
| ลงอะไหล่ในใบงาน แล้วปิดงาน | ตัดให้เองตอนปิดงาน |
| กดปุ่ม "เบิกอะไหล่" ไปแล้ว แล้วปิดงาน | ไม่ตัดซ้ำ ของหายไปครั้งเดียว |
| ปิดงานซ้ำ / แก้ใบงานแล้วบันทึกอีก | ไม่ตัดซ้ำ |
| ของในคลังไม่พอ | ปิดงานได้ตามปกติ แล้วบอกว่าตัดสำเร็จกี่รายการ ไม่สำเร็จกี่รายการเพราะอะไร<br>รายการที่ตัดไม่ได้ยังค้างเป็น "ยังไม่เบิก" เติมของแล้วกดปุ่มเบิกเก็บตกได้ |
ปุ่ม "เบิกอะไหล่" ยังใช้ได้เหมือนเดิม ถ้าอยากตัดของออกจากคลังตั้งแต่ตอนหยิบของมาซ่อม — กดแล้วปิดงานทีหลังก็ไม่ตัดซ้ำ
เดิมหน้านี้แสดงเฉพาะงานของสาขาที่เลือกอยู่บนหัวจอ — ช่างที่ถูกส่งไปช่วยอีกสาขา แล้วรับงาน จากสาขานั้นมาทำ พอกลับมาเปิดหน้า งานช่าง ที่สาขาตัวเอง งานนั้นหายไปทั้งใบ โดยไม่มีอะไรบอก ว่าหายไปไหน ต้องเดาเองแล้วไปสลับสาขาบนหัวจอถึงจะเจอ
ตอนนี้ "งานของฉัน" ครอบทุกสาขาเสมอ — ไม่ว่าจะเลือกสาขาไหนค้างไว้บนหัวจอ งานที่มอบหมาย ให้คุณจะขึ้นครบทุกใบ (ใช้ได้ทันที ไม่ต้องตั้งค่าอะไร)
| สิ่งที่เห็นในหน้า งานช่าง | ขอบเขตสาขา |
|---|---|
| แท็บ งานของฉัน (งานที่มอบหมายให้คุณ) | ทุกสาขา |
| แท็บ รอรับ และงานอื่นในรายการ | สาขาที่เลือกอยู่บนหัวจอ |
ป้ายสีม่วงบอกชื่อสาขา — งานที่อยู่คนละสาขากับที่เลือกอยู่ จะมีป้ายชื่อสาขากำกับไว้ ทั้ง บนการ์ดในรายการ และ ในหน้าต่างรายละเอียดงาน
💡 ที่ต้องบอกซ้ำในหน้าต่างรายละเอียดด้วย เพราะช่างมักเปิดงานจากการค้นหาโดยไม่ได้มองการ์ด ถ้าไม่บอก จะไม่รู้เลยว่าเครื่องไม่ได้อยู่สาขาที่ตัวเองยืนอยู่ แล้วเดินไปหยิบผิดสาขา
⚠️ ถ้าโหลดงานจากสาขาอื่นไม่สำเร็จ ระบบจะบอก — ไม่ปล่อยให้อ่านเป็น "ไม่มีงาน"
จะขึ้นแถบสีส้ม "รายการอาจไม่ครบ" พร้อมปุ่ม "ลองใหม่" งานในสาขาที่เลือกอยู่ยังแสดงครบตามปกติ แต่งานที่คุณรับมาจากสาขาอื่นอาจยังไม่ขึ้น ให้กดลองใหม่ก่อน อย่าเพิ่งสรุปว่างานหาย
💡 เคล็ดลับ: ช่างเห็นเฉพาะงานซ่อมที่มอบหมายให้ตัวเอง (บวกงานที่ยังไม่มีช่างรับในสาขาที่เลือกอยู่ ซึ่งอยู่ในแท็บ รอรับ) ส่วนผู้จัดการและผู้ดูแลระบบเห็นงานทั้งหมด
⭐ 8 ก.ย. 2569 — หน้าต่าง "ผูกอะไหล่/อุปกรณ์เสริม" เปิดมาที่แท็บ "อุปกรณ์เสริม" แล้ว
ที่มา — ร้านแจ้งว่า "ตรงอะไหล่ผมไม่ได้ใช้งานครับ เพราะว่าอะไหล่จะไปตัดคำว่าเพิ่มอะไหล่อยู่แล้วครับ" ซึ่งถูกต้อง: แถวอะไหล่มีปุ่ม "เพิ่มอะไหล่" ที่ตัดสต๊อกให้อยู่แล้ว การผูกอะไหล่ซ้ำที่แถว ค่าบริการ จึงเป็นทางที่ซ้ำซ้อน ⇒ เดิมต้องกดสลับแท็บทุกครั้งที่จะผูกฟิล์ม/เคส/สายชาร์จ
ตอนนี้
⭐ 2 ก.ย. 2569 — ค้นหาด้วยเลขงานได้แล้ว · ช่องค้นหารับ เลขงานสั้น 8 ตัว ที่ลูกค้าคัดลอกจากหน้าติดตาม (เช่น 43CC1942 หรือ #43CC1942) และรหัสเต็มของงาน · พิมพ์แค่ 4 ตัวแรก ก็เริ่มค้นได้ · ใช้ได้ทั้งหน้ารายการงานซ่อมและคิวรอชำระที่หน้าขาย
⭐⭐ 4 ก.ย. 2569 — ลงค่าบริการที่ไม่ใช่อะไหล่ได้แล้ว · ในหน้าต่างแก้ไขงานซ่อม กล่องรายการอะไหล่มีปุ่ม "เพิ่มค่าบริการ" เพิ่มมา ใช้ลงรายการอย่าง ติดฟิล์มกระจก · ค่าบริการล้างเครื่อง · ค่าตรวจเช็ค ที่มีชื่อและราคา แต่ไม่ใช่อะไหล่
| อะไหล่ | ค่าบริการ | |
|---|---|---|
| ตัดสต๊อก / เบิกของ | ได้ | ได้ ถ้ากด "ผูกอะไหล่/อุปกรณ์เสริม" (ดูบล็อก 7 ก.ย. ด้านล่าง) |
| ช่องต้นทุน/ชิ้น | กรอกได้ | กรอกไม่ได้ — ถ้าผูกคลังไว้ ระบบเขียนต้นทุนจริงให้เองตอนเบิก |
| ลูกค้าเห็นบนหน้าติดตาม | อยู่กลุ่ม "อะไหล่" | อยู่กลุ่ม "ค่าบริการ" แยกกัน |
· รายการเก่าทุกใบยังเป็นอะไหล่เหมือนเดิมทุกบรรทัด ไม่มีอะไรเปลี่ยน · 🔴 เลิกพิมพ์ค่าบริการปนในช่องผลวินิจฉัยได้แล้ว — พิมพ์ปนไว้จะทำให้ ราคารวมบนหน้าติดตามน้อยกว่าที่เก็บจริง เพราะระบบไม่รู้ว่าเป็นเงิน · ✅ ใบเสร็จและใบเสนอราคาที่พิมพ์ออกกระดาษแยก "ค่าอะไหล่" กับ "ค่าบริการ" ให้แล้ว (ตั้งแต่ 4 ก.ย. 2569)
⭐ 4 ก.ย. 2569 — ช่อง "อาการที่แจ้ง (แสดงให้ลูกค้าเห็น)" · เป็นช่องใหม่แยกต่างหาก จากช่องอาการเดิม · ช่องเดิมยังเป็น บันทึกภายในของร้าน เหมือนเดิม — ลูกค้าไม่เห็น (ร้านบางแห่งจดรหัสปลดล็อกเครื่องไว้ในนั้น) · ช่องใหม่นี้ ลูกค้าเห็นบนหน้าติดตาม ⇒ พิมพ์เฉพาะสิ่งที่อยากให้ลูกค้าอ่าน เช่น "จอแตก ทัชไม่ติดมุมบนซ้าย" · ไม่บังคับ · เว้นว่างไว้ = หน้าติดตามไม่แสดงหัวข้อนี้เลย · 🔴 ระบบไม่คัดลอกข้อความจากช่องเดิมมาให้อัตโนมัติ โดยเจตนา — เพราะข้อความเก่าอาจมีรหัสเครื่องลูกค้าปนอยู่
⭐ 5 ก.ย. 2569 — ปุ่ม "คัดลอกจากอาการเสีย" · อยู่ข้างช่อง "อาการที่แจ้ง (แสดงให้ลูกค้าเห็น)" กดแล้วระบบ นำข้อความจากช่อง "อาการเสีย" ด้านบนมาใส่ให้ แล้วแก้ก่อนบันทึกได้ · ปุ่มจะกดไม่ได้เมื่อช่อง "อาการเสีย" ยังว่าง · ถ้าช่องปลายทางมีข้อความอยู่แล้ว ระบบจะถามก่อนพร้อมโชว์ข้อความเดิม — เลือก "ไม่เขียนทับ" หรือ "เขียนทับ" · ข้อความยาวเกิน 1,000 ตัวอักษร จะถูกตัด และระบบบอกให้ทราบ (ไม่ตัดเงียบ ๆ) · 🔴 ระบบยังไม่เติมให้อัตโนมัติเหมือนเดิม — ต้องกดปุ่มเอง เพราะคนกดจะได้เห็นข้อความก่อนว่ามีรหัสเครื่องลูกค้าปนอยู่ไหม · ⚠️ ใต้ช่องมีคำเตือนติดไว้ตลอด: "ตรวจข้อความก่อนบันทึกทุกครั้ง — บรรทัดนี้ลูกค้าเห็นบนหน้าติดตาม ห้ามมีรหัสปลดล็อกเครื่องหรือบันทึกภายในร้านปนอยู่"
⭐⭐ 5 ก.ย. 2569 — ค่าบริการตัดสต๊อกได้แล้ว (ปุ่ม "ผูกอะไหล่จากคลัง")
ที่ร้านขอมา — "ลูกค้าติดฟิล์มด้วย ระบบก็จะตัดสต๊อคฟิล์มตัวนั้นด้วย"
วิธีใช้ — ในแถวค่าบริการ พิมพ์ชื่อและราคาตามปกติ (เช่น ติดฟิล์มกระจกเต็มจอ ฿150)
แล้วกด "ผูกอะไหล่จากคลัง" ใต้ชื่อรายการ → เลือกฟิล์มจากคลัง
· 🔴 ชื่อรายการและราคาที่กรอกไว้จะไม่เปลี่ยน — การผูกมีผลกับ การตัดสต๊อก อย่างเดียว
· ผูกแล้วเห็นป้าย "<ชื่ออะไหล่> · คงเหลือ N" และมีปุ่มเอาการผูกออก
· แถวนั้นจะเข้าคิว "ยังไม่เบิก" เหมือนอะไหล่ ⇒ กดเบิกเองได้ หรือระบบตัดให้ตอนปิดงาน
· ช่องต้นทุนกรอกเองไม่ได้ — ระบบเขียนต้นทุนจริงจากคลังให้เองตอนเบิก (ขึ้นว่า "— ระบบเขียนให้เองตอนเบิก")
· ลบแถวออกจากใบซ่อม ⇒ ของคืนเข้าคลังอัตโนมัติ
· ⚠️ แถวที่เบิกไปแล้วเปลี่ยนการผูกไม่ได้ — ถ้าจะแก้ต้องลบแถวนั้นเพื่อคืนสต๊อกก่อน
· ของในคลังไม่พอ ⇒ ปิดงานยังสำเร็จเหมือนเดิม ระบบจะบอกว่าตัวไหนตัดสต๊อกไม่ได้
· 🔴 ไม่ผูกก็ใช้ได้เหมือนเดิมทุกอย่าง — ค่าบริการที่ไม่กินของจากคลัง (ค่าตรวจเช็ค · ค่าแรง) ปล่อยว่างไว้ · 🔴 รายการเก่าทุกใบไม่เปลี่ยน — ระบบไม่ผูกให้ย้อนหลังและไม่เดา ต้องกดผูกเองเท่านั้น
⭐⭐⭐ 7 ก.ย. 2569 — ผูก "อุปกรณ์เสริม" ได้แล้ว ไม่ใช่แค่อะไหล่
ที่ร้านแจ้งมา — "หน้าตรงนี้ให้ไปผูกอะไหล่ อุปกรณ์เสริมได้ไหมครับ"
🔴 ทำไมของเดิมใช้ไม่ได้กับฟิล์ม — ปุ่มเดิมค้นเฉพาะ คลังอะไหล่ อย่างเดียว แต่ร้านส่วนใหญ่เก็บ ฟิล์มกันรอย · เคส · สายชาร์จ ไว้ที่ คลังอุปกรณ์เสริม (คนละเมนูกัน) ⇒ กดปุ่มแล้วหาฟิล์มของตัวเองไม่เจอเลย และชื่อปุ่มที่เขียนว่า "อะไหล่" ยิ่งทำให้เข้าใจว่าไม่เกี่ยวกัน
ตอนนี้ — ปุ่มเปลี่ยนชื่อเป็น "ผูกอะไหล่/อุปกรณ์เสริม" และในหน้าต่างเลือกมี 2 แท็บ · แท็บ อะไหล่ — เหมือนเดิมทุกอย่าง · แท็บ อุปกรณ์เสริม — ค้นจากคลังอุปกรณ์เสริม (พิมพ์ชื่อหรือ SKU ค้นได้) · ป้ายหลังผูกบอกด้วยว่ามาจากคลังไหน เช่น "อุปกรณ์เสริม · ฟิล์มกระจกนิรภัย · คงเหลือ 9" ⇒ ตอนนี้ ติดฟิล์มให้ลูกค้าแล้วสต๊อกฟิล์มลดจริง และต้นทุนจริงเข้าบัญชี
· 🔴 ผูกได้อย่างมากอย่างเดียว — เลือกจากแท็บหนึ่งแล้วอีกแท็บจะถูกล้างให้เอง (ของชิ้นหนึ่งมาจากคลังเดียว ไม่ใช่ทั้งสอง) · 🔴 อุปกรณ์เสริมที่ตั้งไว้ว่า "ไม่นับสต๊อก" ผูกไม่ได้ — ระบบจะบอกให้ไปเปิด "นับสต๊อก" ที่หน้าคลังอุปกรณ์เสริมก่อน · เหตุผล: ผูกไปก็ตัดสต๊อกไม่ได้ แล้วจะได้ป้าย "ยังไม่เบิก" ค้างถาวรที่แก้ไม่ได้ · ลบแถวออกจากใบซ่อม ⇒ ของคืนเข้าคลังอุปกรณ์เสริมอัตโนมัติ เหมือนฝั่งอะไหล่ · ยกเลิกงานซ่อม ⇒ คืนของให้เช่นกัน · ช่องต้นทุนยังกรอกเองไม่ได้ — ระบบเขียนต้นทุนจริงจากคลังให้ตอนเบิก · ป้าย "ยังไม่เบิก (N)" นับรวมทั้ง 2 คลังแล้ว
· 🔴 รายการเก่าทุกใบไม่เปลี่ยนแม้แต่บรรทัดเดียว — ระบบไม่ผูกย้อนหลังและไม่เดา · 🔴 ยอดเงินและจำนวนสต๊อกของงานเก่าไม่ขยับสักบาทสักชิ้น
⭐ 6 ก.ย. 2569 — ลำดับรายการอะไหล่ไม่สลับเองอีกแล้ว · เดิมแถวอะไหล่ในใบซ่อม สลับที่กันเองได้ทุกครั้งที่มีคนแก้แถวใดแถวหนึ่ง และเอกสาร 2 ใบของงานเดียวกันอาจเรียงไม่เหมือนกัน · ตอนนี้เรียงตาม ลำดับที่กรอกเข้าไป และคงที่ทุกครั้งที่เปิดดูหรือพิมพ์ · ⭐ 6 ก.ย. 2569 — ตรงกับลำดับที่คีย์แม้เพิ่มหลายรายการรวดเดียว (เดิมมีโอกาสสลับกันเองราว 5%) · ⭐ จอ "คลังอะไหล่" รีเฟรชเองแล้วเมื่อ ปิดงาน · ยกเลิกงาน · ลบรายการออกจากใบซ่อม (เดิมต้องกดรีเฟรชเอง) · 🔴 เอกสารที่ออกไปแล้วไม่เปลี่ยน — ระบบเก็บรายการไว้ตั้งแต่วันออกใบ พิมพ์ซ้ำได้เหมือนเดิมทุกตัวอักษร
⭐ 5 ก.ย. 2569 — ปุ่ม "เพิ่มค่าบริการ" ใช้ได้ที่หน้า "งานของฉัน" ของช่างแล้ว · เดิมมีเฉพาะหน้ารายการงานซ่อม · ช่างลงค่าบริการได้จากหน้าที่ตัวเองทำงานอยู่ ไม่ต้องสลับหน้า · หน้านั้นแยกบรรทัด "รวมค่าอะไหล่" กับ "รวมค่าบริการ" ให้เห็นอยู่แล้ว · ยอดรวมไม่เปลี่ยนสักบาท
📍 หน้า: /repair
👤 สิทธิ์: OWNER, ADMIN, MANAGER, SALESTECH (ช่างธรรมดา ไม่เห็น)
วัตถุประสงค์: ดูรายการงานซ่อมทั้งหมด กรอง/ค้นหา สร้างงานซ่อมใหม่
ฟีเจอร์:
รูปถ่ายเครื่อง และ รูปถ่ายเครื่อง (หลังซ่อม) (ดู §5.3B)/repair-intake ไม่ใช่หน้านี้ — หน้านี้ใช้แก้ไขงานที่มีอยู่แล้วเท่านั้น⭐ 2 ก.ย. 2569 — แนบรูปได้จากในเช็คลิสต์แล้ว · เปิดเช็คลิสต์ ก่อนซ่อม จะมีช่อง รูปถ่ายเครื่อง (ตอนรับ) · เปิดเช็คลิสต์ หลังซ่อม จะมีช่อง รูปถ่ายเครื่อง (หลังซ่อม) — ช่างแนบรูปได้ตรงจุดที่กำลังตรวจเครื่องอยู่ ไม่ต้องกลับไปหน้าแก้ไขงานซ่อม · รูปชุดเดียวกันกับที่แก้จากหน้างานซ่อม (ดู §5.5)
📍 ที่ไหน: /repair → ปุ่ม แก้ไข ของงานนั้น → เลื่อนลงไปใต้ช่อง รูปถ่ายเครื่อง
ในหน้าต่างแก้ไขงานซ่อมมีช่องแนบรูป 2 ช่อง:
| ช่อง | ใช้เมื่อไร | บังคับไหม |
|---|---|---|
| รูปถ่ายเครื่อง | ช่องเดิมที่ใช้อยู่ทุกวัน (ช่องเดียวกับที่พิมพ์ลงใบรับซ่อม) | ❌ |
| รูปถ่ายเครื่อง (หลังซ่อม) ⭐ | ถ่ายตอนซ่อมเสร็จ ก่อนส่งคืนลูกค้า | ❌ ไม่บังคับ |
ทำไมถึงคุ้มที่จะถ่าย — ถ้าใส่ไว้ ลูกค้าจะเห็นรูปเทียบก่อน/หลังบนหน้าติดตาม (ร้านที่แพ็คเกจโปรเฟสชันนอลขึ้นไป · ดู §5.7) ไม่ใส่ก็ใช้งานได้ตามปกติทุกอย่าง ไม่มีอะไรบล็อก
🔴 ระบบไม่ย้ายรูปเก่าไปช่อง "หลังซ่อม" ให้อัตโนมัติ รูปที่เก็บไว้ก่อนหน้านี้อยู่ในช่องเดียวกันหมด และ ไม่มีอะไรบอกได้ว่าใบไหนถ่ายตอนไหน ระบบจึงไม่เดาให้ — ถ้าอยากให้งานเก่าแสดงแบบแยก ต้องเข้าไปย้ายเอง
⚠️ ใบรับซ่อม A4 ไม่เปลี่ยน — ยังพิมพ์เฉพาะ รูปถ่ายเครื่องตอนรับ เหมือนเดิม เพราะใบนั้นพิมพ์ตอนรับเครื่อง ซึ่งยังไม่มีรูปหลังซ่อมโดยธรรมชาติ
📍 ปุ่ม: ปุ่มสีตามสถานะถัดไป อยู่ในแถวงานซ่อมที่ /repair (ทั้งแบบตารางบนคอมและแบบการ์ดบนมือถือ)
ปัญหาเดิม: จะเลื่อนงานจาก "รับเครื่อง" ไป "กำลังซ่อม" ต้องเปิดหน้าต่างแก้ไข → เลื่อนหาช่องสถานะ → เลือก → กดบันทึก ทั้งที่งานหนึ่งวันต้องกดแบบนี้หลายสิบครั้ง
ตอนนี้: กดปุ่มที่แถวได้เลย ระบบเปลี่ยนสถานะให้ทันที
กติกาของปุ่ม
| กรณี | ระบบทำอะไร | ทำไม |
|---|---|---|
| ขั้นกลางที่ขั้นถัดไปชัดเจน (เช่น รับเครื่อง → กำลังซ่อม) | กดครั้งเดียว เปลี่ยนทันที ไม่ถามยืนยัน | งานนี้กดวันละหลายสิบครั้ง กล่องยืนยันทุกครั้งจะกลายเป็นการกดผ่านโดยไม่อ่าน · ตัวที่กันพลาดจริงคือประวัติการแก้ไขที่ระบบบันทึกให้ ไม่ใช่กล่องยืนยัน |
| ขั้นถัดไปกำกวม (กำลังซ่อม / รออะไหล่) | กดแล้วกางเมนูให้เลือก 2 ทาง | 1 คลิกเมื่อไม่กำกวม · 2 คลิกเฉพาะตอนที่มีทางเลือกจริง |
| ส่งมอบแล้ว | ถามยืนยันเสมอ | เป็นขั้นเดียวที่แตะเรื่องเงิน — ในโหมด "เก็บที่เคาน์เตอร์ซ่อม" งานที่มียอดมากกว่า ฿0 จะถูกบันทึกว่าเก็บเงินแล้วไปในคำสั่งเดียวกัน |
| ยกเลิกงาน | ไม่มีในปุ่มด่วน — ต้องเปิดหน้าต่างแก้ไข | เป็นการทำลายข้อมูล ไม่ควรอยู่ห่างจากนิ้วแค่คลิกเดียว |
หน้าต่างยืนยันตอนกด "ส่งมอบแล้ว" จะแตกต่างกันตามสภาพของงาน
| สภาพงาน | สิ่งที่เห็น | ทางออกที่ให้มาในหน้าต่างเดียวกัน |
|---|---|---|
| ปกติ | สรุปลูกค้า · เครื่อง · ยอด แล้วให้กดยืนยัน | — |
| ร้านเก็บเงินที่หน้าขาย + ยังไม่ได้ลงราคา | บอกว่าส่งมอบไม่ได้เพราะยังไม่รู้ยอด | ปุ่ม "ลงราคาเลย" → เปิดหน้าต่างแก้ไขงานใบเดียวกันให้ทันที |
| ร้านเก็บเงินที่หน้าขาย + ยังไม่ได้เก็บเงิน | บอกว่าต้องเก็บเงินที่แคชเชียร์ก่อน | ปุ่ม "ไปหน้าขาย" |
| ร้านเก็บเงินที่หน้าขาย + ยอด ฿0 | บังคับกรอกเหตุผล (เคลมประกัน / ซ่อมฟรี) | กรอกแล้วระบบบันทึกเหตุผลลงหมายเหตุของงานให้ |
💡 ทุกกรณีที่กดไม่ได้ จะมีทางออกให้เสมอ — ไม่ใช่แค่บอกว่าทำไม่ได้แล้วปล่อยให้ไปหาเอง
ถอยสถานะกลับได้ ถ้ากดผิด
ปุ่มด่วนออกแบบให้ เดินหน้าอย่างเดียว แต่ถ้ากดพลาด ให้เปิดหน้าต่างแก้ไขงาน แล้วเลือกสถานะย้อนกลับได้ทุกค่า — จงใจเปิดทางถอยไว้ ไม่ได้ล็อก เพราะถ้าล็อกทั้งสองทาง ร้านที่กดผิดจะตันถาวรและแก้เองไม่ได้
ℹ️ งานที่ออกบิลขายไปแล้ว ยังเดินสถานะได้ตามปกติ และยัง แก้หมายเหตุ · เปลี่ยนช่าง · แก้คำวินิจฉัย ได้ — สิ่งเดียวที่แก้ไม่ได้คือ ราคา (ค่าแรง / ค่าอะไหล่) เพราะใบกำกับภาษีที่ออกไปแล้วแก้ย้อนหลังไม่ได้ตามข้อกำหนดของกรมสรรพากร ถ้าต้องแก้ราคาจริง ๆ ต้องไปยกเลิกบิลที่ /sales-history ก่อน (ซึ่งต้องเรียกใบกำกับภาษีฉบับเดิมคืนจากลูกค้าด้วย)
แจ้งลูกค้าทางอีเมลเมื่อสถานะเปลี่ยน ⭐ (10 ส.ค. 2569)
⚠️ อ่านก่อน: ลูกค้าร้านมือถือแทบไม่ให้อีเมล
จากข้อมูลจริงบนระบบ (สิงหาคม 2569): ลูกค้า 217 คนจากทุกร้าน มีอีเมล 0 คน · มีเบอร์โทร 217 คน (100%)
ช่องทางที่ใช้ได้จริงกับลูกค้าทุกคนคือ QR ติดตามสถานะบนใบรับซ่อม (ดู §5.7) ซึ่งไม่ต้องใช้ข้อมูลติดต่ออะไรเลย ลูกค้าสแกนแล้วดูสถานะเองได้ตลอด
อีเมลด้านล่างนี้เป็น ช่องทางเสริม สำหรับร้านที่มีลูกค้าองค์กรหรือเก็บอีเมลไว้อยู่แล้วเท่านั้น
ถ้าลูกค้ามีอีเมลในระบบ ระบบจะส่งอีเมลแจ้งให้เองทุกครั้งที่สถานะเปลี่ยน — ทั้งตอนกดปุ่มเดินสถานะที่แถวรายการ และตอนแก้ผ่านหน้าต่างแก้ไข (เดิมส่งเฉพาะทางหลัง ซึ่งเป็นทางที่คนใช้น้อยกว่า)
| เรื่อง | รายละเอียด |
|---|---|
| ส่งเมื่อไหร่ | เฉพาะตอนสถานะเปลี่ยนจริง — กดสถานะเดิมซ้ำไม่ส่ง |
| ส่งให้ใคร | ลูกค้าที่มีอีเมลในระบบเท่านั้น ถ้าไม่มีก็ข้ามไปเงียบ ๆ งานยังบันทึกปกติ |
| สถานะที่มีอีเมล | เสนอราคาแล้ว · อนุมัติแล้ว · กำลังซ่อม · รออะไหล่ · ซ่อมเสร็จ · ส่งมอบแล้ว · ยกเลิก |
| สถานะที่ไม่ส่ง | รับเครื่อง — ลูกค้าเพิ่งยื่นเครื่องให้กับมือ ไม่ต้องแจ้งซ้ำ |
| ส่งไม่สำเร็จจะเป็นอย่างไร | ไม่กระทบการบันทึก สถานะยังเปลี่ยนตามปกติ ระบบแค่บันทึกไว้ใน log |
⚠️ ถ้ากดเปลี่ยนหลายสถานะรวดเดียว ลูกค้าจะได้อีเมลหลายฉบับ (1 ฉบับต่อ 1 การเปลี่ยนสถานะ) — ถ้าต้องการแก้ย้อนหลังหลายขั้น แนะนำให้ใช้หน้าต่างแก้ไขแล้วตั้งสถานะปลายทางทีเดียว
ยกเลิกงานซ่อมที่เบิกอะไหล่ไปแล้ว ⭐ ใหม่ 14 ส.ค. 2569
เมื่อยกเลิกงานซ่อมที่ เบิกอะไหล่ออกจากคลังไปแล้ว ระบบจะขึ้นหน้าต่างยืนยัน พร้อมรายชื่ออะไหล่และจำนวนที่จะถูกคืนเข้าคลัง และมีช่องให้ติ๊กว่า
☑️ "อะไหล่ถูกใช้ไปกับเครื่องลูกค้าแล้ว ไม่ต้องคืนเข้าคลัง"
| กรณี | ติ๊กหรือไม่ | ผลที่เกิด |
|---|---|---|
| ยังไม่ได้ใส่อะไหล่ลงเครื่อง ของยังอยู่ | ไม่ติ๊ก (ค่าตั้งต้น) | อะไหล่กลับเข้าคลังตามจำนวนที่เบิก |
| ใส่เข้าเครื่องลูกค้าไปแล้ว เอาคืนไม่ได้ | ติ๊ก | สต๊อกไม่เพิ่มกลับ ของถือว่าใช้ไปแล้วจริง |
⚠️ ถ้าติ๊กผิด สต๊อกจะไม่ตรงกับของจริงบนชั้น — ติ๊กเมื่อของถูกใช้ไปแล้วเท่านั้น
✅ ค่าตั้งต้นคือ "คืนเข้าคลัง" เหมือนเดิมทุกประการ และงานซ่อมที่ ไม่ได้เบิกอะไหล่ จะไม่ถามอะไรเพิ่มเลย ยกเลิกได้ทันทีเหมือนก่อน
หลังยกเลิกเสร็จ ข้อความยืนยันจะบอก จำนวนที่ขยับจริง ไม่ใช่แค่คำว่า "สำเร็จ" รวมถึงกรณีที่อะไหล่บางตัวหาในคลังไม่เจอแล้วจึงคืนให้ไม่ได้
⭐ 2 ต.ค. 2569 — เพิ่มอะไหล่ด้วยรหัสของอะไหล่ที่เคยลบไปแล้วได้ · ระบบกู้อะไหล่เดิมกลับมาแล้วใส่ข้อมูลใหม่ทับ (ขึ้นข้อความ "กู้อะไหล่เดิมกลับมาแล้ว") · ทำงานแบบเดียวกับอุปกรณ์เสริม ดู §3.2 "เพิ่มสินค้าด้วยรหัสของสินค้าที่เคยลบไปแล้ว"
⭐ 2 ก.ย. 2569 — ตั้ง "จำนวนขั้นต่ำ" เป็น 0 = ไม่ติดตามขั้นต่ำ · ใช้กับอะไหล่รุ่นเก่าที่อยากมีชื่อติดร้านไว้แต่ ไม่ต้องการสั่งมาอีก (เช่นแบตเตอรี่รุ่นเก่า · จอแท้ที่เลิกสต๊อก) · ตั้ง 0 แล้วรายการนั้นจะ ไม่ขึ้น "ใกล้หมด" · ไม่โผล่ในหน้าสั่งอะไหล่ · ไม่นับบนแดชบอร์ด ไม่ว่าจะเหลือกี่ชิ้น · ป้ายในคลังจะเป็น "ไม่ติดตามขั้นต่ำ" สีเทา (ไม่ใช่ "หมด") · ของยังเบิกเข้างานซ่อมได้และเห็นจำนวนจริงเหมือนเดิม · ขั้นต่ำ 1 ขึ้นไปทำงานเหมือนเดิมทุกอย่าง
📍 หน้า: /spare-parts
👤 สิทธิ์: OWNER, ADMIN, MANAGER, TECHNICIAN, SALESTECH
วัตถุประสงค์: จัดการคลังอะไหล่สำหรับงานซ่อม — เพิ่ม, รับเข้า, เบิกออก
ฟิลด์อะไหล่:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ชื่ออะไหล่ | ชื่อ Part | ✅ |
| หมวดหมู่ | ประเภทอะไหล่ | ✅ |
| ยี่ห้อ | ยี่ห้อที่รองรับ | ❌ |
| รุ่น | รุ่นที่รองรับ | ❌ |
| จำนวนคงเหลือ | Stock ปัจจุบัน | ✅ |
| ราคาทุน (Unit Price) | ราคาต้นทุนต่อชิ้น | ✅ |
| ราคาขาย | ราคาที่คิดลูกค้า | ✅ |
| ตำแหน่งจัดเก็บ | Location ในคลัง | ❌ |
| หมายเหตุ | รายละเอียดเพิ่มเติม | ❌ |
การจัดการสต็อกอะไหล่:
/reorders (§5.4B) — track DRAFT → SENT → RECEIVED + auto bump stockเปิดโมดัล "ประวัติการเคลื่อนไหว" ของอะไหล่หรืออุปกรณ์เสริมชิ้นไหนก็ได้ แล้วบวกลบตามรายการที่เห็น จะได้เท่ากับจำนวนคงเหลือเสมอ ถ้าของหายไป จะมีบรรทัดบอกได้ว่าไปไหน — ขายออก · เบิกใช้ซ่อม · โอนไปสาขาไหน · ปรับยอดจากรอบนับ · หรือลบบิล
ก่อนหน้านี้บางเส้นทางเปลี่ยนจำนวนโดยไม่ทิ้งบรรทัดไว้เลย (โอนระหว่างสาขา · รับของจากใบสั่ง · ลบบิล) ทำให้ยอดกับประวัติไม่ตรงกันและไล่ที่มาไม่ได้
สิ่งที่ระบบกันให้:
| สถานการณ์ | ระบบทำอย่างไร |
|---|---|
| 2 คนเบิกของชิ้นสุดท้ายพร้อมกัน | คนหนึ่งได้ อีกคนได้ข้อความบอกจำนวนคงเหลือจริงและทางแก้ — จำนวนไม่ติดลบ |
| คืนอะไหล่เข้าคลัง | คืนได้ไม่เกินที่เบิกไปจริง และกดปุ่มคืนซ้ำไม่ทำให้ของงอก |
| กดปุ่มรับของ/อนุมัติซ้ำ หรือ 2 คนกดพร้อมกัน | ทำงานครั้งเดียว อีกครั้งได้ข้อความบอกว่ามีคนทำไปแล้ว |
| กรอกจำนวนเป็นทศนิยม | ปฏิเสธพร้อมบอกเหตุผล (เดิมปัดทิ้งเงียบ ๆ) |
| สร้างสินค้าด้วยจำนวนติดลบ | ปฏิเสธ |
⚠️ ยกเลิกงานซ่อมแล้วอะไหล่ที่เบิกไปจะกลับเข้าคลังให้อัตโนมัติ พร้อมข้อความบอกว่าคืนอะไรกลับมาบ้าง ถ้าอะไหล่ถูกใช้ไปกับเครื่องลูกค้าแล้วจริง ๆ (ไม่ควรคืน) ให้แจ้งทีมงาน — ตอนนี้ยังไม่มีช่องติ๊กบนหน้าจอ
📍 หน้า: /masters/repair-price-templates (CRUD) + quick-pick ใน /repair-intake
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: ทุกร้านมีงานซ่อมยอดฮิต 20-30 รายการที่ทำซ้ำทุกวัน เช่น "iPhone 13 จอแตก = ฿2,500" — Template ทำให้ช่าง quick-pick แทนการพิมพ์ทุกครั้ง
สร้าง template:
/masters → กด Template ราคาซ่อมไอโฟน หรือ Aplle หรือมีเว้นวรรคเกิน แถวราคานั้นจะไม่โผล่ให้ลูกค้าเห็นเลย เงียบ ๆ ไม่มีข้อความเตือน⭐ แถวไหนจะไม่โผล่บนหน้าเช็คราคาซ่อมสาธารณะ ระบบบอกให้แล้ว (ใหม่ 31 ส.ค. 2569)
เดิมทุกแถวขึ้นสถานะ ใช้งาน สีเขียวเหมือนกันหมด แม้แถวนั้นจะไม่แสดงบนหน้าสาธารณะ ⇒ ตั้งราคาไปแล้วเชื่อว่าเสร็จ แต่ลูกค้าไม่เห็น
ตอนนี้แถวที่ไม่แสดงจะมี บรรทัดสีเทาใต้ชื่อ บอกเหตุผล 4 แบบ แยกกันเพราะแก้คนละทาง:
| เหตุผลที่ขึ้น | ทางแก้ |
|---|---|
| ยังไม่ได้เลือกอาการ | กด แก้ไข แถวนั้นแล้วเลือกประเภทซ่อม |
| อาการที่ผูกไว้ถูกปิดใช้งาน | ข้อมูลหลัก → ประเภทการซ่อม เปิดใช้งานคืน |
| อาการยังไม่ได้ติ๊กให้แสดง | ข้อมูลหลัก → ประเภทการซ่อม ติ๊กคอลัมน์ โชว์หน้าราคา |
| แถวนี้ปิดใช้งานอยู่ | เปิดใช้งานแถวนั้น |
ใช้งาน:
/repair-intake รับเครื่องpopularityScore += 1 (เรียงขึ้นบนใน list ครั้งถัดไป)ประโยชน์:
⭐ เกรดอะไหล่ (ใหม่ 29 ส.ค. 2569):
| เกรด | หมายถึง |
|---|---|
| แท้ศูนย์ | อะไหล่แท้จากผู้ผลิต |
| แท้ถอด / รีเฟอร์ | อะไหล่แท้ที่ถอดจากเครื่องอื่น หรือผ่านการรีเฟอร์บิช |
| เทียบเกรดพรีเมียม | อะไหล่เทียบคุณภาพสูง |
| เทียบเกรดประหยัด | อะไหล่เทียบราคาประหยัด |
⭐ ผูกอะไหล่จากคลังเข้ากับแถวราคา (ใหม่ 31 ส.ค. 2569):
ในโมดัลเพิ่ม/แก้ไข template มีช่อง "อะไหล่จากคลัง (ไม่บังคับ)" — เลือกแล้วระบบเติม ค่าอะไหล่ ให้จากราคาขายในคลัง จะได้ไม่ต้องพิมพ์ราคาซ้ำ 2 ที่
⭐ ตัวช่วยตั้งราคาครั้งแรก (ใหม่ 31 ส.ค. 2569) — ปุ่ม "ตัวช่วยตั้งราคา":
ร้านที่เพิ่งเริ่มมักไม่รู้ว่าจะตั้งราคาอะไรก่อน (อาการเป็นสิบ × รุ่นเป็นร้อย) — ตัวช่วยนี้ดูจาก อะไหล่ที่สาขานี้ใช้ในงานซ่อมจริงบ่อยที่สุด แล้วเสนอรายการให้ตั้งราคาเป็นชุด
เมื่อไม่มีรายการเสนอ ระบบจะบอกสาเหตุที่ต่างกัน 3 แบบ เพราะแก้คนละทาง
| ข้อความที่เห็น | แปลว่า | ต้องทำอะไร |
|---|---|---|
| สาขานี้ยังไม่เคยรับงานซ่อม | ยังไม่มีใบซ่อมในสาขานี้เลย | รับงานซ่อมสัก 2-3 ใบก่อน หรือกด + เพิ่ม template เองได้เลย |
| มีงานซ่อมแล้ว แต่ยังไม่เคยบันทึกอะไหล่ | มีใบซ่อม แต่ไม่มีใบไหนลงรายการอะไหล่ไว้ | เข้าไปลงอะไหล่ในใบซ่อม แล้วกลับมากดตัวช่วยใหม่ |
| ไม่มีรายการที่เสนอได้ | มีอะไหล่ในใบซ่อม แต่ใช้เสนอไม่ได้ (เช่นถูกลบไปแล้ว) | ตั้งราคาเองด้วยปุ่ม + เพิ่ม template |
⚠️ "ไม่มีรายการเสนอ" ไม่เท่ากับ "ตั้งราคาครบแล้ว" — ระบบจะบอกเหตุผลเสมอ ถ้าเห็นหน้าว่างโดยไม่มีคำอธิบาย แปลว่าโหลดไม่สำเร็จ ให้กดลองใหม่
⭐ หน้าเช็คราคาซ่อมสาธารณะ (ใหม่ 30 ส.ค. 2569) — เปิดให้ลูกค้าดูราคาเองได้
📍 หน้า: /settings (สวิตช์ + ลิงก์ไลน์) · /masters/repair-types (ติ๊กอาการที่จะโชว์)
🔴 ต้องทำ 2 อย่าง ไม่ใช่อย่างเดียว — เปิดสวิตช์แล้วยังไม่ติ๊กอาการ หน้าจะว่างเปล่า
| ขั้น | ทำที่ไหน | ใครทำได้ | ค่าตั้งต้น |
|---|---|---|---|
| 1. เปิดสวิตช์ "หน้าเช็คราคาซ่อมสาธารณะ" | ตั้งค่า | เจ้าของร้าน (หรือผู้ที่ได้ "สิทธิ์เจ้าของร้าน") | ปิด |
| 2. ติ๊กอาการที่จะโชว์ | ข้อมูลหลัก → ประเภทการซ่อม | ผู้ดูแลขึ้นไป | ไม่ติ๊กทุกอาการ |
| 3. (ไม่บังคับ) ใส่ลิงก์ไลน์ของร้าน | ตั้งค่า → ข้อมูลร้านค้า | ผู้ดูแลขึ้นไป | ว่าง |
https:// เท่านั้น — เปิดแอปไลน์ → โปรไฟล์ร้าน → คัดลอกลิงก์ มาวาง
(ระบบไม่รับลิงก์รูปแบบอื่นเพื่อกันลิงก์ที่ไม่ปลอดภัยไปโผล่บนหน้าที่คนนอกกด)https://<โดเมนของระบบ>/repair-price/<รหัสร้าน>
เอาไปแปะเฟซบุ๊ก ส่งในไลน์ หรือทำเป็น QR ติดหน้าร้านได้เลย — รหัสร้านคือชุดตัวอักษรเดียวกับที่เห็น
ในลิงก์ตอนลูกค้าติดตามงานซ่อม · ⚠️ ปุ่มคัดลอกลิงก์ในหน้าตั้งค่ายังไม่มี จะตามมาในรุ่นถัดไปsitemap.xml ให้อัตโนมัติ
และหน้ามีหัวข้อ/คำอธิบายที่มี ชื่อร้านของคุณ ⇒ เอาลิงก์ไปแปะเฟซบุ๊กหรือส่งไลน์แล้ว ขึ้นพรีวิวเป็นชื่อร้าน
· ร้านที่ปิดสวิตช์จะไม่อยู่ใน sitemap และไม่ถูกเก็บเข้าสารบบ
· ⚠️ ต่างจากหน้าติดตามงานซ่อมโดยเจตนา — หน้านั้นถูกกันไม่ให้ Google เก็บ เพราะมีข้อมูลลูกค้ารายบุคคล
ส่วนหน้าราคามีแต่ราคาที่ร้านตั้งใจเปิดเผย
· ⏳ Google ใช้เวลาเก็บข้อมูลหลายวันถึงหลายสัปดาห์ — เปิดวันนี้แล้วค้นเจอพรุ่งนี้เลยไม่ได้📍 หน้า: /suppliers (CRUD ผู้จัดหา) + /reorders (สั่งซื้อ + ติดตาม)
👤 สิทธิ์: OWNER, ADMIN, MANAGER (ทั้ง suppliers และ reorders)
⭐ เปิดถึงระดับผู้จัดการแล้ว (24 ส.ค. 2569) — เดิมเมนู "ผู้จัดหา" เห็นได้เฉพาะ เจ้าของร้านกับผู้ดูแล และยัง ผูกอยู่กับสิทธิ์งานซ่อม ตั้งแต่ตอนที่ผู้จัดหา ใช้กับอะไหล่อย่างเดียว · ตั้งแต่ 24 ส.ค. ผู้จัดหาผูกกับ มือถือและอุปกรณ์เสริม ด้วยแล้ว (ช่อง "ซื้อจาก") การผูกกับงานซ่อมจึงไม่ตรงกับความจริงอีกต่อไป · ระดับใหม่เท่ากับหน้า "ข้อมูลหลัก" ซึ่งเป็นข้อมูลตั้งต้นชนิดเดียวกัน
วัตถุประสงค์: ก่อนหน้านี้สั่งอะไหล่ต้องจดเองใน LINE → จำเลขส่งของไม่ได้ → ส่งมาแล้วลืมเช็ค → stockout ตอนช่างต้องการ. ระบบ Reorder ช่วย:
/suppliers)จัดการ supplier ที่สั่งอะไหล่ประจำ:
ลบ supplier ไม่ได้ถ้ายังมีอะไหล่ผูกอยู่ — ต้องตั้ง active=false แทน
ใน /spare-parts form:
/reorders) — WorkflowTab "ใกล้หมด" — auto-detect:
quantity ≤ minStockWorkflow 3 stages:
| สถานะ | คำอธิบาย | Action |
|---|---|---|
| DRAFT | สร้างแล้ว ยังไม่ส่ง | กด ส่งคำสั่งซื้อ → SENT · หรือ ยกเลิกใบสั่งซื้อ |
| SENT | ส่ง LINE/email ให้ supplier แล้ว | กด รับเข้าอะไหล่ เมื่อของมาถึง → RECEIVED · หรือ ยกเลิกใบสั่งซื้อ ⭐ |
| RECEIVED | ของมาแล้ว — auto bump SparePart.quantity | (จบ — ยกเลิกไม่ได้อีก) |
| CANCELLED | ยกเลิกแล้ว | (จบ — ย้อนกลับไม่ได้ ต้องสร้างใบใหม่) |
⭐ ใบที่ส่งคำสั่งไปแล้ว (SENT) ยกเลิกได้ (ปรับปรุง 27 ส.ค. 2569) เดิมพอกด "ส่งคำสั่งซื้อ" ไปแล้ว หน้าจอเหลือปุ่ม รับเข้าอะไหล่ ปุ่มเดียว — ร้านที่กดผิดหรือสร้างรายการยังไม่ครบ แก้เองไม่ได้เลย ต้องปล่อยใบค้างไว้ ตอนนี้เปิดใบสั่งซื้อแล้วมีปุ่ม "ยกเลิกใบสั่งซื้อ" (สีแดง) ให้กดได้
การยกเลิกไม่แตะสต๊อก — จำนวนอะไหล่คงเหลือไม่เปลี่ยนแม้แต่ชิ้นเดียว เพราะของยังไม่เคยถูกรับเข้ามา · ใบที่ยกเลิกแล้ว ย้อนกลับไม่ได้ ต้องสร้างใบใหม่
⚠️ ใบที่กด "รับเข้าอะไหล่" ไปแล้ว ยกเลิกไม่ได้อีกเลย เพราะของเข้าคลังจริงไปแล้ว ⇒ ถ้ารายการยังไม่ครบหรือกดผิด ให้ ยกเลิกใบ แทนการรับเข้า
⭐ ต้องยืนยันก่อนทุกครั้งที่กดปุ่มที่ย้อนไม่ได้ (ปรับปรุง 27 ส.ค. 2569)
รับเข้าอะไหล่ และ ยกเลิกใบสั่งซื้อ จะเปิดกล่องให้ยืนยันก่อนเสมอ
ไม่ทำงานทันทีที่กดเหมือนเดิม
· กล่องยืนยันของ รับเข้าอะไหล่ จะ ลิสต์ของทุกรายการที่จะเข้าคลังพร้อมจำนวน
(เช่น หน้าจอ iPhone 12 +7) ⇒ เห็นก่อนว่าจะเพิ่มอะไรบ้าง แล้วค่อยตัดสินใจ
· กด "ไม่ใช่ตอนนี้" ได้เสมอ — ไม่มีอะไรเกิดขึ้น สต๊อกไม่ขยับ
· ปุ่ม ส่งคำสั่งซื้อ ไม่ต้องยืนยัน เพราะยังกดยกเลิกทีหลังได้
Create modal — มี search/picker แบบ:
Performance: modal ใช้ uncontrolled refs (qty/unitCost) — ไม่ lag แม้มีหลายรายการ
/purchase-history) ⭐ ใหม่ 24 ส.ค. 2569📍 หน้า: /purchase-history — อยู่ถัดจากเมนู "ผู้จัดหา (Suppliers)" ในแถบเมนูซ้าย
ดูรายการมือถือ + อุปกรณ์เสริมทั้งหมดที่บันทึกช่อง "ซื้อจาก" ไว้ (ผู้จัดหาหรือลูกค้า) ในที่เดียว — ไม่ต้องไล่เปิดทีละเครื่องที่หน้าสต็อก
💡 มองเห็นได้กว้างกว่าเมนูผู้จัดหา — เมนูนี้เปิดให้ทุกคนที่เข้าถึงงานขายได้ (OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH) ในขณะที่หน้า /suppliers (จัดการผู้จัดหา) เปิดเฉพาะ OWNER/ADMIN เพราะหน้านี้เป็นเรื่องมือถือ/อุปกรณ์เสริมซึ่งแคชเชียร์เห็นต้นทุนอยู่แล้วที่หน้าสต็อก ไม่ใช่เรื่องอะไหล่
ใช้ทำอะไรได้:
⚠️ แสดงเฉพาะของที่ถูกระบุ "ซื้อจาก" ไว้เท่านั้น สินค้าที่ไม่ได้เลือกช่องนี้ตอนเพิ่ม/แก้ไข (รวมของเก่าทั้งหมดก่อนวันที่ 24 ส.ค. 2569) จะไม่ปรากฏในหน้านี้ — ไม่ใช่ระบบตกหล่น แต่เพราะไม่มีข้อมูลให้แสดงจริง ๆ
⭐ 2 ก.ย. 2569 — มีช่องแนบรูปเครื่องในเช็คลิสต์แล้ว · เช็คลิสต์ ก่อนซ่อม → ช่อง รูปถ่ายเครื่อง (ตอนรับ) · เช็คลิสต์ หลังซ่อม → ช่อง รูปถ่ายเครื่อง (หลังซ่อม) · แนบได้สูงสุด 10 รูปต่อช่อง · ลูกค้าเห็นรูปเหล่านี้บนหน้าติดตามงานซ่อม (แยกก่อน/หลังให้เองเมื่อมีทั้ง 2 ชุด) · เป็นรูปชุดเดียวกับที่แก้จากหน้างานซ่อม แก้ที่ไหนก็เห็นตรงกัน · ไม่แตะช่องรูป = รูปเดิมไม่เปลี่ยน
📍 หน้า: /repair-checklist
👤 สิทธิ์: OWNER, ADMIN, MANAGER, SALESTECH และช่างทุกคน
วัตถุประสงค์: เก็บหลักฐานสภาพเครื่องก่อน/หลังซ่อม พร้อมลายเซ็นลูกค้า — ป้องกัน customer dispute ("ของผมก่อนเอามาซ่อมไม่เป็น พอซ่อมเสร็จกลับเป็น") + เป็นใบ QC ก่อนส่งมอบ
⭐ ช่างคนไหนก็เช็คเครื่องได้แล้ว ไม่ต้องเป็นช่างที่ซ่อมเครื่องนั้น (16 ส.ค. 2569)
เดิมช่างเปิดหน้านี้ได้ แต่เห็นเฉพาะงานที่ตัวเองรับผิดชอบกับงานที่ยังไม่มีเจ้าของ งานของช่างคนอื่น จึงไม่มีให้กดเลย ทั้งที่ในทางปฏิบัติใครว่างก็ควรช่วยเทสต์เครื่องได้ — ตอนนี้หน้าเช็คลิสต์แสดงงานทั้งหมด ของสาขา ส่วนหน้า งานช่าง ยังแสดงเฉพาะงานที่มอบหมายให้แต่ละคนเหมือนเดิม (ไม่ได้ทำให้ช่างเห็นงานคนอื่นปนในคิวตัวเอง) · ⚠️ แต่ขอบเขตสาขาของหน้า "งานช่าง" เปลี่ยนไปแล้วเมื่อ 19 ส.ค. 2569 — แท็บ งานของฉัน ครอบทุกสาขา ไม่ใช่เฉพาะสาขาที่เลือกอยู่อีกต่อไป (ดู §5.2)
ถ้ามีคนเช็คใบนั้นไว้แล้ว ระบบจะเตือนก่อน — ขึ้นกล่องบอกว่า ใครเช็คไว้ เมื่อไร แล้วให้ยืนยัน เพราะ 1 งานเก็บผลเช็คได้ใบเดียวต่อชนิด การบันทึกทับจะแทนที่ของเดิมทั้งใบ รวมถึงชื่อคนเช็ค · ระบบไม่ห้ามทับ (ช่างอาจเช็คผิดจริง ๆ) แต่ทุกครั้งที่ทับ จะมีบันทึกไว้ใน Audit Log ว่าใครทับของใคร พร้อมชื่อคนเช็คคนเดิมที่ถูกแช่แข็งไว้ในบันทึก — เปิดดูได้ที่ บันทึกการใช้งาน
ระบบบังคับลำดับการเช็คตามมาตรฐานร้านมือถือสากล — ห้ามข้ามขั้นตอน:
1. รับเครื่อง (status = รับเครื่อง / PENDING)
↓
2. ✅ เช็คก่อนซ่อม (PRE_REPAIR) ← ทำตอนนี้! ก่อนเริ่มซ่อม + ขอลายเซ็นลูกค้า
↓
3. ประเมินราคา (status = เสนอราคา)
↓
4. ลูกค้าอนุมัติ (status = อนุมัติ)
↓
5. ช่างซ่อม (status = กำลังซ่อม / รออะไหล่)
↓
6. ซ่อมเสร็จ (status = เสร็จแล้ว) ← ปุ่ม pre จะ lock ตอนนี้แล้ว!
↓
7. ✅ เช็คหลังซ่อม (POST_REPAIR) ← ทำตอนนี้ + ขอลายเซ็นลูกค้ารับเครื่อง
↓
8. ส่งเครื่อง (status = ส่งคืนแล้ว)
↓
9. ✅ ปุ่ม "เปรียบเทียบ" pre vs post จะโผล่ที่ตาราง
กฎเหล็ก 3 ข้อ:
รับเครื่อง / เสนอราคา / อนุมัติ / กำลังซ่อม / รออะไหล่ เท่านั้น. พอซ่อมเสร็จ (เสร็จแล้ว / ส่งคืนแล้ว) ปุ่ม pre จะกลายเป็นเทา (disabled) ตลอดกาลเสร็จแล้ว หรือ ส่งคืนแล้ว ก่อน ปุ่ม post ถึงจะกดได้เหตุผลของกฎ (ทำไมเข้มขนาดนี้):
ผลถ้าลืมเช็ค PRE: ถ้าซ่อมเสร็จแล้วเพิ่งนึกได้ว่าลืมเช็ค PRE → ทำไม่ได้แล้ว ระบบ lock ตลอดกาล. แถวนี้จะไม่มีปุ่มเปรียบเทียบเลย เป็นบทเรียนให้ครั้งหน้าเช็คก่อน
💡 Guided flow จาก /repair-intake (ปรับปรุง 2026-05-14): เมื่อใช้ flow รับเครื่องที่หน้า /repair-intake ระบบจะ redirect มา /repair-checklist?autoOpen=PRE_REPAIR ทันที — modal PRE_REPAIR เปิดเองโดย user ไม่ต้องกดอะไร. เมื่อ save checklist เสร็จ ระบบจะ auto-issue ใบรับซ่อม + redirect ไป preview พิมพ์ — ไม่ต้องกลับมาที่ /repair-documents เอง. ดูรายละเอียดที่ §5.1
🖨️ พิมพ์ผลตรวจให้ลูกค้าถือกลับได้แล้ว ⭐ ใหม่ 23 ส.ค. 2569 (ลูกค้าร้านขอมาเอง)
เมื่อเช็คครบทั้งก่อนและหลังซ่อม กดปุ่ม "เปรียบเทียบ" → ในหน้าต่างจะมีปุ่ม "พิมพ์ให้ลูกค้า" ออกมาเป็น ใบ A4 "ผลตรวจเช็คก่อน–หลังซ่อม"
ในใบมีอะไร — ชื่อร้าน/สาขา · เลขที่งานซ่อม · ชื่อลูกค้า · รุ่นเครื่อง/IMEI/S/N · เวลาและชื่อคนที่เช็คทั้ง 2 รอบ · ตารางทุกรายการ พร้อมผลก่อน–หลังและหมายเหตุ · บรรทัดสรุป (ตรวจกี่รายการ / หลังซ่อมยังไม่ปกติกี่รายการ / ผลเปลี่ยนกี่รายการ) · ช่องเซ็นของช่างและของลูกค้า
🔒 รหัสปลดล็อกเครื่องและอาการที่แจ้ง ไม่ถูกพิมพ์ลงใบนี้ — ตั้งใจให้เป็นแบบนั้น เพราะเป็นใบที่ออกจากร้านไป
⚠️ ใบนี้ยาวได้หลายแผ่น ถ้าร้านตั้งรายการเช็คไว้เยอะ ซึ่งถูกต้องแล้ว — หัวตารางจะซ้ำให้ทุกหน้าและแถวจะไม่ถูกตัดครึ่ง · ถ้าเปลืองกระดาษเกินไป กดลิงก์ "พิมพ์แล้วเปลืองกระดาษ?" ที่มุมล่างซ้ายของหน้าต่างเพื่อดูวิธีตั้งค่า
💡 หัวกระดาษใช้สาขาของงานซ่อมใบนั้น ไม่ใช่สาขาที่เลือกอยู่บนหัวจอ (เลือก "ทุกสาขา" ค้างไว้แล้วพิมพ์ ก็ยังได้ชื่อสาขาที่ถูกต้อง)
⚠️ ตราบใดที่ยังไม่ได้ให้ลูกค้าเซ็นรับทราบ ใบนี้ยังไม่มีเลขที่เอกสาร และพิมพ์จากข้อมูล ณ ตอนที่กด — ถ้ามีการแก้ผลเช็คทีหลังแล้วพิมพ์ซ้ำ จะได้คนละใบกับที่ลูกค้าถืออยู่ · พอให้ลูกค้าเซ็นแล้วจะไม่เป็นแบบนั้นอีก (ดูหัวข้อถัดไป)
⭐ ให้ลูกค้าเซ็นรับทราบผลตรวจบนหน้าจอได้แล้ว — ล็อกเป็นหลักฐาน (25 ส.ค. 2569)
ร้านแจ้งเข้ามาว่า "ช่างเทสต์เครื่องแล้วแจ้งลูกค้า แต่ทางร้านไม่มีการลงชื่อของลูกค้า ว่ารับทราบผลของการเทสก่อนซ่อมและหลังซ่อมแล้ว"
ตอนนี้ในโมดัล "เปรียบเทียบก่อน/หลังซ่อม" มีกล่อง "ให้ลูกค้าเซ็นรับทราบผลตรวจ" อยู่ใต้ตาราง — เซ็นบนหน้าจอได้เลย ไม่ต้องพิมพ์กระดาษเพิ่ม (ใช้นิ้วเซ็นบนแท็บเล็ต ที่เคาน์เตอร์ได้)
ขั้นตอน
หลังบันทึกแล้ว
CKA-)
วันเวลา ชื่อคนที่บันทึก และ ลายเซ็นทั้ง 2 เป็นรูปที่แก้ไม่ได้🔒 ทำไมต้องล็อก — ใบนี้คือหลักฐานตอนมีข้อโต้แย้ง ถ้าแก้ได้ทีหลัง ลายเซ็นก็ไม่ได้พิสูจน์อะไร ⇒ ผลตรวจถูก แช่แข็ง ไว้ตั้งแต่วินาทีที่กดยืนยัน
✅ เช็คลิสต์ตัวจริงยังแก้ได้เหมือนเดิม — ไม่ได้ล็อกการทำงานประจำวันของร้าน แต่ถ้ามีคนแก้หลังลูกค้าเซ็นไปแล้ว จะมีแถบสีส้มเตือน ว่าใบที่ลูกค้าถืออยู่ เป็นฉบับวันไหน (เตือนอย่างเดียว ไม่บล็อก)
⚠️ เซ็นผิดคน / ผิดใบ แก้ได้ — ปุ่ม "ยกเลิกใบรับทราบ" ในกล่องเดียวกัน เจ้าของร้านและผู้ดูแลเท่านั้น และต้องกรอกเหตุผลอย่างน้อย 10 ตัวอักษร · ยกเลิกแล้วเซ็นใหม่ได้
🔒 รหัสปลดล็อกเครื่องและอาการที่แจ้ง ไม่ถูกเก็บและไม่ถูกพิมพ์ลงใบนี้เช่นเดิม
💡 เซ็นค้างไว้แล้วเผลอปิด — ระบบถามก่อน แตะนอกกรอบไม่ปิดหน้าต่างแล้ว และถ้ากด "ปิด" หรือ Esc ขณะมีลายเซ็นค้างอยู่ จะมีกล่องถามยืนยันก่อนทิ้ง
โครงสร้าง 2 แท็บ:
⭐ ใบที่เช็คครบแล้ว เปิดกลับมาดูได้แล้ว (18 ส.ค. 2569) — เดิมพอเช็คครบทั้งก่อนและหลังซ่อม ปุ่มเปิดใบหายไปทั้ง 2 ปุ่ม เหลือแค่ "✓ เช็คแล้ว" กับปุ่ม "เปรียบเทียบ" ⇒ ใบที่บันทึกเสร็จแล้วเปิดกลับมาดูไม่ได้เลยจากหน้าจอ ซึ่งเป็นปัญหาเพราะใบนี้คือหลักฐานที่ร้านต้องหยิบมาให้ลูกค้าดูตอนมีข้อโต้แย้ง
ตอนนี้มีปุ่ม "ดู / แก้ไข" ทั้งบนตารางและการ์ดในมือถือ · ปุ่ม "เปรียบเทียบ" ยังอยู่เหมือนเดิม · การแก้ทับใบของช่างคนอื่นยังเตือนก่อนและบันทึกไว้เหมือนเดิม (จากงาน 17 ส.ค.) — เปลี่ยนแค่เรื่อง "เปิดดูได้" ไม่ได้ปลดการกันแก้หลักฐาน
🔴 ติ๊ก "ใช้ทุกสาขา" เลือกได้เฉพาะตอนสร้างหัวข้อใหม่ (แก้ 19 ส.ค. 2569) เปิดหัวข้อเดิมขึ้นมาแก้ ช่องนี้จะ กดไม่ได้ พร้อมบอกเหตุผลใต้ช่อง · เดิมกดสลับได้ และขึ้นว่า "แก้ไขรายการเรียบร้อย" — แต่ไม่มีอะไรเปลี่ยนจริงสักอย่าง (ระบบไม่เคยรับค่านี้ตอนแก้ไขเลย) ⇒ เชื่อว่าย้ายแล้วทั้งที่ยังอยู่ที่เดิม · เหตุผลที่ยังย้ายไม่ได้: ผลการเช็คที่บันทึกไว้ อ้างอิงชื่อหัวข้อเป็นข้อความ ถ้าย้ายขอบเขตแล้วชื่อไปซ้ำกับหัวข้อของอีกสาขา จะจับคู่ใบก่อนซ่อมกับใบหลังซ่อมไม่ได้ ซึ่งใบนี้คือหลักฐานที่ร้านใช้ตอนลูกค้าเคลม · ต้องการเปลี่ยนขอบเขต: ลบหัวข้อเดิม แล้วเพิ่มใหม่โดยติ๊ก/ไม่ติ๊กตั้งแต่ตอนสร้าง
ขั้นตอนการเช็ค (ใน modal):
⭐ เช็คหลังซ่อม: รายการ "ไม่เกี่ยวข้อง" ยกมาจากใบก่อนซ่อมให้เอง (เพิ่ม 17 ส.ค. 2569) รายการที่ตอนเช็คก่อนซ่อมเลือกว่า "ไม่เกี่ยวข้อง" (เช่น "การชาร์จไร้สาย" บนเครื่องที่ไม่มีฟีเจอร์นี้) จะถูกเลือกให้อัตโนมัติตอนเปิดเช็คหลังซ่อม ไม่ต้องไล่กดใหม่ทีละรายการ · มีแถบบอกว่า ยกมากี่รายการ และแก้ได้ — ถ้าเลือกผิดตอนก่อนซ่อม กดเปลี่ยนได้ทันที · "ปกติ" กับ "ไม่ปกติ" ไม่ถูกยกมา — สองอันนั้นคือผลการทดสอบ ต้องเช็คใหม่ทุกครั้ง ส่วน "ไม่เกี่ยวข้อง" คือคุณสมบัติของตัวเครื่อง (ไม่มีฟีเจอร์นั้น ก่อนซ่อมหลังซ่อมก็ไม่มี) · หมายเหตุของรายการที่ไม่ปกติก็ไม่ถูกยกมา เพราะเป็นอาการก่อนซ่อม ซึ่งซ่อมไปแล้ว · ใบที่บันทึกไปแล้ว เปิดกลับมาแก้จะเห็นค่าเดิมของตัวเอง ไม่ถูกทับ
⭐ รหัสปลดล็อกเครื่องแสดงอยู่ในโมดัลเช็คลิสต์แล้ว (เพิ่ม 17 ส.ค. 2569)
เดิมเวลาเทสต์เครื่องต้องปิดโมดัลไปดูรหัสแล้วกลับมาเปิดใหม่ ซึ่งเสียสิ่งที่กรอกค้างไว้ด้วย
ตอนนี้รหัสที่บันทึกไว้ตอนรับเครื่องจะขึ้นอยู่ ด้านบนของโมดัล ทั้งเช็คก่อนซ่อมและหลังซ่อม พร้อมปุ่มคัดลอก
· แสดงด้วยตัวอักษรที่แยก 0 กับ O และ 1 กับ l ออกจากกันได้ — รหัสที่อ่านผิดตัวเดียวคือปลดล็อกไม่ได้
· รองรับทุกรูปแบบ: PIN · ตัวอักษรผสม · ภาษาไทย · รูปแบบลากนิ้ว (L→↓→R) · อีโมจิ · มีช่องว่าง
· ไม่ได้กรอกรหัสไว้ = ไม่มีอะไรขึ้นเลย ไม่มีช่องว่างหรือขีดค้าง
🔒 รหัสยังไม่ถูกพิมพ์ลงเอกสารใด ๆ เหมือนเดิม — ใบรับซ่อม · ใบส่งคืน · ไฟล์ Excel ที่ export
และไม่ถูกส่งไปกับข้อมูลที่บันทึกผลเช็คลิสต์ · แสดงบนจอให้ช่างดูเท่านั้น
⚠️ ตอนเช็คก่อนซ่อมลูกค้ายืนอยู่หน้าเคาน์เตอร์และต้องเซ็นลายเซ็นในหน้านี้ รหัสจะอยู่บนจอตอนนั้นด้วย
— เป็นรหัสของเจ้าของเครื่องเอง แต่ถ้าจอหันออกให้คนอื่นเห็นได้ ควรระวังจังหวะนี้
💡 รายการเช็คขึ้นตามสาขาที่เลือกอยู่ (แก้ 17 ส.ค. 2569) — เดิมระบบยึดสาขาที่ผูกกับบัญชีตอนเข้าสู่ระบบ สลับสาขาบนหัวจอแล้วรายการก็ยังเป็นของสาขาเดิม · ตอนนี้ทั้งการดูและการเพิ่มรายการใหม่ ใช้สาขาที่เลือกอยู่จริง และในโมดัลมีป้ายบอกว่ารายการชุดนี้เป็นของสาขาไหน · ร้านสาขาเดียวไม่มีอะไรเปลี่ยน
Compare modal (เทียบก่อน/หลัง):
ในตารางรายการอะไหล่ (ทั้งจอช่างและหน้ารายการทั้งหมด) แต่ละแถวมีเพิ่ม 3 อย่าง
| ช่อง | ใช้ตอนไหน |
|---|---|
| ต้นทุน/ชิ้น | ราคาที่ร้านจ่ายไปต่อชิ้น — ใช้คิดกำไรและรายงานภาษี |
| ส่วนลด (บาท) | ลดเฉพาะแถวนั้น เช่น สายชาร์จ 2 เส้น ฿600 ลดให้ ฿100 → คิด ฿500 |
| สวิตช์ "ของแถม" | แถมฟรี — คิดเงิน ฿0 แต่ ยังลงต้นทุนและตัดสต๊อกตามปกติ |
⭐⭐⭐ 11 ก.ย. 2569 — ต้นทุนที่ร้านใส่เอง ไม่ถูกทับตอนกด "ส่งงาน" อีกแล้ว
อาการเดิมที่ร้านแจ้งมา — ช่างแก้ต้นทุนแบตเตอรี่เป็น 350 แล้วกด "ส่งงานเสร็จ" มาดูอีกทีกลับเป็น 660 · จออีกตัวใส่ต้นทุนไว้ 1,250 แต่กลายเป็น 0 เพราะตอนส่งงาน ระบบตัดอะไหล่ออกจากคลัง แล้วเอา ราคาทุนที่ตั้งไว้ในคลังอะไหล่ ไปเขียนทับ (แบตในคลังตั้งไว้ 660 · จอตัวนั้นในคลังตั้งไว้ 0) และหลังส่งงานแล้ว แก้กลับไม่ได้ กดบันทึกก็ไม่มีอะไรเตือน
ตอนนี้
| เดิม | ตอนนี้ | |
|---|---|---|
| กดส่งงาน / กดเบิกอะไหล่ | ต้นทุนถูกทับด้วยราคาทุนในคลัง | ต้นทุนที่ร้านใส่คงอยู่ — ใช้ราคาทุนในคลังเฉพาะแถวที่ยังไม่มีต้นทุน |
| แก้ต้นทุนหลังตัดสต๊อกแล้ว | แก้ไม่ได้ (บันทึกแล้วค่าหายเงียบ ๆ) | แก้ได้ · ช่อง จำนวน ยังล็อกเหมือนเดิม |
| ค่าบริการที่ผูกคลัง (เช่นติดฟิล์ม) | ได้ต้นทุนจากคลังตอนตัดสต๊อก | เหมือนเดิมทุกอย่าง — ช่องต้นทุนของค่าบริการยังกรอกเองไม่ได้ |
🔴 งานที่ต้นทุนเพี้ยนไปแล้วก่อนอัปเดตนี้ — เปิดงานนั้น แก้ช่อง ต้นทุน/ชิ้น ให้ถูก แล้วกดบันทึก · ระบบไม่ได้แก้ย้อนหลังให้เอง
⚠️ ถ้าขึ้นข้อความ "ต้นทุนถูกแก้ไปแล้วจากที่อื่น" — แปลว่ามีคนแก้ต้นทุนรายการนั้นไปก่อนแล้ว ระหว่างที่หน้าจอนี้เปิดค้างไว้ ระบบ จะไม่เอาค่าบนจอนี้ไปทับ (กันต้นทุนที่เพิ่งแก้หายไป) · ทางแก้: ปิดหน้าต่าง แล้วเปิดงานซ่อมใหม่ แล้วแก้ต้นทุนอีกครั้ง · ถ้าหน้าจอเปิดค้างไว้ตั้งแต่ก่อนอัปเดต ให้กด F5 รีเฟรชก่อนแก้
💡 โมดัลปุ่มเบิกอะไหล่ (ไอคอนกล่องสีส้ม) — ยอดด้านล่างเปลี่ยนชื่อเป็น "มูลค่าที่ออกจากคลัง" คิดจาก ราคาทุนในคลัง ณ วันที่เบิก จึงอาจไม่เท่ากับต้นทุนในใบซ่อม — ต้นทุนของงานให้ดูที่รายการอะไหล่ในใบซ่อม
💡 ตั้งราคาทุนในคลังอะไหล่ให้ตรงความจริงไว้เสมอ — ระบบใช้ค่านี้เติมต้นทุนให้ตอนเลือกอะไหล่ ถ้าในคลังเป็น 0 ต้นทุนที่เติมให้ก็จะเป็น 0
⭐ อะไหล่ที่ช่างเพิ่ม "พร้อมกับ" กดส่งงานเสร็จ ถูกตัดสต๊อกทันทีแล้ว — เดิมอะไหล่ที่เพิ่มในการกดบันทึกครั้งเดียวกับ "ส่งงานเสร็จ" ยังไม่ถูกตัด ไปตัดตอนหน้าร้านกด "ส่งมอบ" แทน (ถ้างานนั้นไม่เคยถูกกดส่งมอบ สต๊อกจะเกินจริง) · ขั้นตอนของช่างเหมือนเดิมทุกอย่าง · ถ้าบันทึกรายการอะไหล่ไม่สำเร็จ งานจะ ยังไม่ถูกเปลี่ยนเป็น "เสร็จแล้ว" — อ่านข้อความแล้วกดใหม่ได้เลย
| กรอกอะไร | ระบบเข้าใจว่า |
|---|---|
| ปล่อยว่าง (ขึ้นคำว่า "ไม่ระบุ") | ยังไม่รู้ต้นทุน — ระบบจะถือว่าทุนเท่ากับราคาขาย คือกำไรจากอะไหล่ชิ้นนั้น = 0 |
| ใส่ 0 | รู้แน่ว่าได้ของมาฟรี (เช่น ตัวแทนแถมมา) กำไรเต็มจำนวน |
| ใส่ตัวเลข | ทุนจริงต่อชิ้น เช่น ซื้อจอมา ฿1,200 ขาย ฿2,000 → กำไร ฿800 |
💡 แนะนำให้กรอกทุกครั้งที่พิมพ์อะไหล่เอง ถ้าไม่กรอก รายงานกำไรกับรายงานภาษีจะมองว่าอะไหล่ชิ้นนั้นไม่มีกำไร ทำให้ตัวเลขกำไรของร้านต่ำกว่าความจริง
ทำไมต้องใช้สวิตช์ "ของแถม" แทนการพิมพ์ราคา 0
⚠️ ห้ามลบแถวของแถมออกจากใบเสร็จ เพราะอยากให้เอกสารดูสั้นลง — ถ้าของแถมไม่ปรากฏบนใบกำกับภาษี จะไม่เข้าข้อยกเว้นและต้องเสียภาษีขายตามมูลค่าของนั้น
ปุ่ม "เบิกออกจากคลัง"
อะไหล่ที่เลือกมาจากช่องค้นหาคลัง (ไม่ใช่พิมพ์ชื่อเอง) จะขึ้นกล่องเขียว "ตัดสต๊อกอะไหล่" พร้อมปุ่มเบิก
ผลกับเอกสารที่พิมพ์:
| เอกสาร | ใช้ Checklist อะไร |
|---|---|
| ใบรับซ่อม (intake) | PRE_REPAIR — แสดงสภาพเครื่องตอนรับ + ลายเซ็นลูกค้ายืนยัน |
| ใบเสร็จซ่อม / SMALL_RECEIPT | POST_REPAIR — แสดงผลตรวจ QC หลังซ่อม + ลายเซ็นลูกค้ารับเครื่อง |
| ใบส่งคืนหลังเครม (resolution) | POST_REPAIR — แทนรายการ Final QC แบบ generic ด้วยรายการจริงที่ช่างเช็ค + ลายเซ็นลูกค้ารับเครื่อง |
👤 ใบที่พิมพ์ระบุชื่อผู้เช็ค — ท้ายบล็อก checklist บนใบรับซ่อม/ใบเสร็จซ่อม จะมีบรรทัด "เช็คโดย {ชื่อ} · {วันเวลา}" ระบบดึงชื่อคนที่กดบันทึกมาให้เอง ไม่ต้องกรอก → เปิดใบเก่าย้อนหลังก็รู้ว่าใครเป็นคนตรวจเครื่องรอบนั้น (ถ้าเป็นใบเก่าที่ไม่มีข้อมูลผู้เช็ค จะแสดงเป็น "เช็คเมื่อ {วันเวลา}" เหมือนเดิม)
Mobile-friendly:
touchAction: none กัน scroll ตอนเซ็น)📍 หน้า: /repair-documents
👤 สิทธิ์: OWNER, ADMIN, MANAGER, SALESTECH (ช่างธรรมดา ไม่เห็น)
วัตถุประสงค์: ออกเอกสารเกี่ยวกับงานซ่อม 5 ประเภท — รับเครื่อง / เสนอราคา / เสร็จรับเงิน / ใบเล็ก / ประกัน
ประเภทเอกสาร 5 แบบ:
| เอกสาร | เลขที่ format | accent | เนื้อหา |
|---|---|---|---|
| ใบรับซ่อม (INTAKE_RECEIPT) | RCV-{branch}-{BEyear}-{seq:04} | slate #475569 | ข้อมูลลูกค้า + เครื่อง + อาการ + checklist PRE_REPAIR + รูปถ่ายเครื่องตอนรับ + QR tracking. ⚠️ ความยาวขึ้นกับจำนวนรายการเช็ค — ร้านที่ตั้งรายการเช็คไว้เยอะ ใบจะยาวเกิน 1 หน้า A4 ซึ่งถูกต้องตามข้อมูล (ลิงก์ช่วยเหลือใต้ปุ่มพิมพ์จะขึ้นว่า "พิมพ์แล้วเปลืองกระดาษ?" ไม่ใช่ "ได้ 2 แผ่น?") · กดลิงก์นั้นจะบอกวิธีตั้งค่าหน้าต่างพิมพ์ให้ใช้กระดาษน้อยลง และบอกตรง ๆ ว่า ตัดหัวข้อตรวจเช็คออกจากใบนี้ไม่ได้ เพราะผลตรวจคือหลักฐานสภาพเครื่อง · ถ้าอยากให้ งานที่เช็คหลังจากนี้ ใช้กระดาษน้อยลง ผู้ดูแลระบบ ลบหัวข้อที่ไม่ได้ใช้ออกได้ที่ งานซ่อม → Checklist → แท็บ "รายการเช็ค" — ⚠️ ใบที่เช็คไปแล้วจะไม่สั้นลง เพราะผลที่บันทึกไว้ถูกเก็บแยกจากหัวข้อตั้งต้น |
| ใบเสนอราคา (QUOTATION) | QUO-{branch}-{BEyear}-{seq:04} | blue #2563eb | รายการอะไหล่ + ค่าบริการ + ค่าแรง + ราคา (พร้อม/ไม่พร้อม VAT) — ขอลูกค้าอนุมัติก่อนเริ่มซ่อม · ⭐ ค่าบริการขึ้นเป็นบรรทัดของตัวเองพร้อมชื่อ ไม่ถูกนับรวมเป็นค่าอะไหล่อีกแล้ว |
| ใบเสร็จรับเงิน (RECEIPT) | RCP-{branch}-{BEyear}-{seq:04} | green #16a34a | เอกสารทางการเงิน — A4 พร้อม VAT/ไม่ VAT |
| ใบเสร็จเล็ก (SMALL_RECEIPT) | SLP-{branch}-{BEyear}-{seq:04} | teal #0d9488 | ขนาด 80mm thermal สำหรับ POS slip printer + มี logo ร้าน · ⭐⭐ พิมพ์ชื่อรายการทีละบรรทัดแล้ว (เดิมมีแต่ยอดรวม ลูกค้าไม่เห็นว่าจ่ายค่าอะไรบ้าง) และแยกบรรทัด ค่าอะไหล่ / ค่าบริการ / ค่าแรง |
| ใบประกัน (WARRANTY_CARD) | WRT-{branch}-{BEyear}-{seq:04} | orange #ea580c | banner จำนวนวัน + รายการที่รับประกันแยกระยะได้ (จอ 30 วัน / แบต 365 วัน) + ความคุ้มครอง/ข้อยกเว้น + วิธีเคลม. ฟิตหน้า A4 เดียว · 🔴 ค่าบริการไม่ขึ้นบนใบนี้ — หัวข้อ "อะไหล่ที่เปลี่ยน / ซ่อม (อยู่ในประกัน)" แสดงเฉพาะอะไหล่ เพราะประกันครอบของที่เปลี่ยน ไม่ใช่บริการที่ทำครั้งเดียว (ถ้างานนั้นมีแต่ค่าบริการ หัวข้อนี้จะหายไปทั้งบล็อก) |
⭐⭐ ค่าอะไหล่ กับ ค่าบริการ แยกกันบนเอกสารแล้ว (4 ก.ย. 2569)
เดิมค่าบริการที่ลงไว้ (ติดฟิล์ม · ล้างเครื่อง · ค่าตรวจ) ถูกนับรวมเข้าช่อง "ค่าอะไหล่" บนกระดาษ ⇒ ใบที่เปลี่ยนจอ ฿1,200 + ติดฟิล์ม ฿100 จะพิมพ์ว่า "ค่าอะไหล่ ฿1,300" ซึ่งไม่ตรงความจริง
ตอนนี้:
🔴 เอกสารที่ออกไปแล้วก่อนหน้านี้ พิมพ์ซ้ำได้เหมือนเดิมทุกตัวอักษร — ระบบเก็บเนื้อหาของใบไว้ตั้งแต่ตอนออกใบ จึงไม่ย้อนไปแก้ใบเก่า (ใบที่ลูกค้าถืออยู่กับใบที่พิมพ์ซ้ำต้องตรงกันเสมอ)
🔴 ยอดเงินไม่เปลี่ยน — เป็นการแยก ป้าย ไม่ใช่การคิดเงินใหม่ · ยอดรวมทั้งสิ้นของทุกใบเท่าเดิมทุกบาท
เปิดเอกสาร 2 วิธี:
/repair-documents → กดแถว repair ที่ต้องการ → modal "ออกเอกสาร" เปิด → เลือกชนิดเอกสาร → กรอกข้อมูลเฉพาะ (VAT / ค่าแรง / ระยะประกัน) → กด "สร้างเอกสาร" → preview เปิดให้พิมพ์Soft workflow ordering: ระบบมี order แนะนำ INTAKE → QUOTATION → RECEIPT → WARRANTY. ถ้าจะข้ามขั้น (เช่น ออก RECEIPT โดยยังไม่ได้ออก QUOTATION) → card จะเทาๆ + Badge "ข้ามลำดับ" + คลิกได้แต่ confirm modal ขึ้นก่อน. ใบรับซ่อมออกได้เสมอ (ไม่มี prereq)
สีพิมพ์: ทุก doc type ใช้ print-color-adjust: exact — สีพื้นหลัง title bar + table header + accent borders จะพิมพ์ออกสีครบแม้ผู้ใช้ไม่ติ๊ก "Background graphics" ใน print dialog ของ Chrome
ลายเซ็นลูกค้า (Priority chain — ใช้ตัวที่มีตามลำดับ):
repair.intakeSignature (สำหรับใบรับซ่อม) / repair.deliverySignature (สำหรับใบเสร็จ)💡 ลูกค้าเซ็นครั้งเดียวแล้วใช้ได้ทุกใบ — ระบบ resolve ลายเซ็นเองอัตโนมัติจาก priority chain ด้านบน. ในใช้งานจริง ลูกค้ามักเซ็น 2 ครั้ง: 1 ครั้งตอนรับเครื่อง (/repair-intake) + 1 ครั้งตอนเช็คสภาพ (/repair-checklist)
⭐⭐ 8 ก.ย. 2569 — แผง "ราคารวม" ตอนดูงานของช่างคนอื่น ขึ้นให้เห็นแม้ยอดจะเป็น ฿0.00
อาการเดิม งานที่คิดยอดแล้วได้ ฿0 (เช่น ซ่อมฟรีให้ลูกค้าประจำ) และไม่มีราคาประเมิน ⇒ แผงราคาหายทั้งแผง ช่างมองไม่เห็นว่ายอดเป็นเท่าไร
ตอนนี้ แผงขึ้นตามปกติและเขียนว่า ฿0.00 · งานที่ยังไม่เคยคิดยอด ยังโชว์ราคาประเมินเหมือนเดิม · ใบที่เพิ่งรับเข้ามายังไม่ขึ้นแผงเปล่าเหมือนเดิม
เป็นการแสดงผลล้วน — ไม่มีการเขียนข้อมูล และโมดัลแก้ไขของช่างไม่เปลี่ยน
⭐⭐⭐ 8 ก.ย. 2569 — ช่อง "ค่าแรง" ที่หน้างานช่าง เริ่มต้นที่ 0 เสมอแล้ว — ไม่ดึง "ราคาประเมิน" มาใส่ให้อีก
อาการเดิม (ร้านแจ้งเข้ามาเอง) ใส่ ราคาประเมิน ที่หน้ารับเครื่อง → มาเปิดหน้างานช่าง → ระบบเอายอดนั้นไปใส่ช่อง ค่าแรง ให้เอง ⇒ พอใส่อะไหล่เพิ่ม ยอดจึงบวกซ้ำ (ราคาประเมินรวมค่าอะไหล่อยู่แล้ว) · ร้านต้องมาลบค่าแรงออกเองทุกใบ และพอเปิดใหม่มันกลับมาเหมือนเดิม
ตอนนี้ ช่องค่าแรง เริ่มที่ 0 เสมอ ช่างกรอกเองตามจริง · ลบเป็น 0 แล้ว อยู่ที่ 0 ตลอด ไม่เด้งกลับ · ราคาประเมินยังอยู่ครบ ดูได้ที่หน้ารับเครื่องและการ์ดในรายการ แค่ไม่ไหลเข้าช่องค่าแรงอีก
ตัวอย่าง: รับเครื่อง ประเมิน ฿1,000 → ช่างใส่อะไหล่ ฿500 ⇒ เดิมยอดขึ้น ฿1,500 · ตอนนี้ขึ้น ฿500 ตามจริง
🔴 งานเก่าที่ค่าแรงถูกเติมไปแล้วและกดบันทึกค้างไว้ ค่านั้นยังอยู่เหมือนเดิม ระบบไม่ได้ไล่แก้ข้อมูลเก่าย้อนหลัง — การเปลี่ยนนี้มีผลกับ การเปิดโมดัลครั้งต่อไป ⇒ ใบที่เคยโดนบวกซ้ำไว้ หากตัวเลขยังไม่ถูก ให้เปิดงานนั้นแล้วแก้ค่าแรงใหม่อีกครั้ง
⭐⭐⭐ 8 ก.ย. 2569 (รอบที่ 3) — เจ้าของร้านทักว่า "ยังไม่เหมือน" — วัดแล้วต่างกันจริง 10 จุด
รอบก่อนเติม สี · โลโก้ · เงื่อนไขท้ายใบ เข้าไปแล้ว แต่ ไม่เคยเอา 2 ใบมาวางเทียบกันทีละบล็อก ⇒ เจ้าของร้านเปิดเทียบเองแล้วทักมา · รอบนี้จึงไล่ให้ครบทุกจุด
| จุดที่ต่าง | ใบที่ร้านพิมพ์ (ถูก) | ใบ PDF ของลูกค้า (เดิม) |
|---|---|---|
| หัวเอกสาร | ป้ายส้ม "ใบประกัน" มุมขวาบน ข้างเลขที่/วันที่ | แถบส้มเต็มความกว้างกลางหน้า |
| ลำดับเนื้อหา | สรุปงานซ่อม → อะไหล่ → แถบ 30 วัน → ความคุ้มครอง/ข้อยกเว้น | แถบ 30 วัน มาก่อน · สรุปงานซ่อมไปอยู่กลางใบ |
| ความคุ้มครอง / ข้อยกเว้น | 2 กล่องคู่กัน ซ้าย-ขวา · มีเครื่องหมาย ✓ / ✗ | เรียงลงล่างเต็มความกว้าง · ไม่มีเครื่องหมาย |
| ท้ายใบ | "ขอบคุณที่ใช้บริการ" + "กรุณาเก็บเอกสารฉบับนี้ไว้เป็นหลักฐาน" | ไม่มีเลย |
| ช่องลงนาม | ผู้รับเครื่อง / พนักงาน · มีวงเล็บ (______) · ลูกค้า / ผู้มอบเครื่อง | พนักงานร้าน · ไม่มีวงเล็บ · ลูกค้า |
| ช่วงวันประกัน | 1 ก.ย. → **1 ต.ค.** (วันหมดเป็นตัวหนา) | 1 ก.ย. ถึง 1 ต.ค. |
| ป้ายในกล่องข้อมูล | ชื่อ โทรศัพท์ | ชื่อ: โทร: |
| บล็อก "หมายเหตุ" | ไม่มี | มี ⇒ ถอดออกแล้ว |
| หัวข้อของกล่อง "วิธีเคลมประกัน" และ "เงื่อนไขการรับประกัน" | อยู่ ในกรอบ | อยู่ นอกกรอบ ⇒ ย้ายเข้าแล้ว |
| หัวข้อ "สรุปงานที่ซ่อม" · "อะไหล่ที่เปลี่ยน / ซ่อม" | อยู่ นอกกรอบ | นอกกรอบอยู่แล้ว ⇒ ถูกแล้ว ไม่แตะ |
🔴 ข้อ 10 มาจากเจ้าของร้านส่งภาพมาอีกรอบ — "ของร้าน หัวข้อจะอยู่ในกรอบ แต่ link ลูกค้า หัวข้อมันจะไม่อยู่ในกรอบ" ⇒ ⭐ ใบ HTML ไม่ได้ทำเหมือนกันทุกกล่อง — 2 กล่องนี้หัวข้ออยู่ข้างใน ส่วน"สรุปงานที่ซ่อม" กับ "อะไหล่" หัวข้ออยู่ข้างนอก ⇒ เกณฑ์ต้องแยกรายบล็อก ห้ามเหมารวมว่าทั้งใบเป็นแบบเดียวกัน
🔴 เรื่องที่ควรรู้ — คำว่า "ฟรี" หายจากใบของลูกค้า ใบที่ร้านพิมพ์เขียนว่า "ทางร้านจะตรวจสอบและซ่อมให้ ฟรี ตามข้อตกลง" แต่ใบ PDF เขียนว่า "ซ่อมให้ตามข้อตกลง" ⇒ กระดาษกับไฟล์สัญญากับลูกค้าคนละอย่าง · รอบนี้เติมคำว่า "ฟรี" ให้ตรงกันแล้ว
🔒 สิ่งที่ไม่เปลี่ยน · ใบยัง พอดี 1 หน้า — ที่จริงคือ โล่งขึ้นกว่าเดิม เพราะการจัด 2 กล่องคู่กันคืนพื้นที่มา ⇒ ไม่มีตัวอักษรไหนถูกย่อให้เล็กลง และไม่มีข้อความไหนถูกตัดออก · ใบที่ร้านพิมพ์จากหน้าจอ ไม่เปลี่ยนแม้แต่จุดเดียว · เอกสารชนิดอื่นได้ไฟล์เหมือนเดิมทุกไบต์ · อาการที่แจ้ง · รหัสปลดล็อกเครื่อง · เลขบัตรประชาชน · ต้นทุนอะไหล่ ยังไม่ออกไปกับใบของลูกค้า · เลขหน้าท้ายใบ PDF เก็บไว้โดยตั้งใจ (ใบที่พิมพ์จากจอไม่มี) — ไฟล์ยาวเกิน 1 หน้าได้อย่างถูกต้อง ⇒ เลขหน้าคือสิ่งที่บอกลูกค้าว่าได้ครบทุกแผ่นหรือยัง
⭐⭐⭐ 8 ก.ย. 2569 — ใบรับประกันที่ลูกค้าโหลด = ใบเดียวกับที่ร้านพิมพ์
ต่อจากรอบที่แล้วที่เติมข้อมูลร้านและข้อมูลลูกค้าให้ครบ รอบนี้ทำให้ หน้าตาเหมือนกันด้วย
สิ่งที่เพิ่มบนใบ PDF ของลูกค้า
| เพิ่มอะไร | เดิม |
|---|---|
| สีทั้งใบ — หัวเอกสารส้ม · กล่องความคุ้มครองเขียว · กล่องข้อยกเว้นแดง · แถบระยะเวลาไล่สี | ขาวดำล้วน |
| โลโก้ร้าน | ไม่มี |
| เงื่อนไขการรับประกันท้ายใบ | ไม่มีบล็อกนี้เลย |
| เวลาที่ออกใบ | มีแต่วันที่ |
| อีเมล + ที่อยู่ลูกค้า | มีแต่ชื่อกับเบอร์ |
| ประเภทเครื่อง | ไม่มี |
🔴 ร้านที่เคยตั้งข้อความเงื่อนไขท้ายเอกสารเองไว้ (เมนู ข้อมูลหลัก → เงื่อนไขท้ายเอกสาร) จะได้ข้อความของตัวเองบนใบ PDF ตั้งแต่วันนี้ — เดิมใบ PDF ไม่มีบล็อกนี้เลย จึงไม่เคยเห็น · ร้านที่ไม่เคยตั้ง จะได้ข้อความค่าตั้งต้นชุดเดียวกับใบที่พิมพ์จากจอ · ควรเปิดดูสัก 1 ใบหลังอัปเดต เผื่อข้อความที่ตั้งไว้นานแล้วไม่ตรงกับที่ใช้จริงวันนี้
✅ ใบยังพอดี 1 หน้าเท่าเดิม — รวมใบที่ยาวที่สุด (รับประกัน 4 รายการ + ข้อความความคุ้มครองเต็ม) ไม่มีข้อความไหนถูกตัดออก และไม่มีตัวอักษรไหนถูกย่อให้เล็กลง
🔒 สิ่งที่ยังไม่หลุดออกไปเหมือนเดิม — อาการที่แจ้ง · รหัสปลดล็อกเครื่อง · เลขบัตรประชาชน · ต้นทุนอะไหล่ ยังไม่เคยและจะไม่ออกไปกับใบของลูกค้า · ใบที่ร้านพิมพ์จากหน้าจอ ไม่เปลี่ยนแม้แต่จุดเดียว · เอกสารชนิดอื่นได้ไฟล์เหมือนเดิมทุกไบต์
⭐⭐ 8 ก.ย. 2569 — ใบรับประกันที่ลูกค้ากดโหลด มีข้อมูลร้านและข้อมูลลูกค้าครบแล้ว
อาการเดิม — ลูกค้าเปิดลิงก์ติดตาม ใส่เลขท้ายเบอร์ 4 ตัว แล้วกด "ดาวน์โหลด" ใบรับประกัน ไฟล์ที่ได้ เปิดได้ปกติ ไม่มีข้อความผิดพลาดอะไรเลย แต่ข้างในขาดไปครึ่งใบ
| สิ่งที่หายไป | ผลที่ลูกค้าเจอ |
|---|---|
| ชื่อร้าน · ที่อยู่ · เบอร์โทร · เลขประจำตัวผู้เสียภาษี | ไม่รู้ว่าใบนี้ออกโดยร้านไหน |
| กล่อง "ข้อมูลลูกค้า" (มีหัวข้อแต่ไม่มีค่า) | ใบดูเหมือนกรอกไม่เสร็จ |
| เบอร์ร้านในบล็อก "วิธีเคลมประกัน" | โทรกลับมาเคลมไม่ได้ |
ตอนนี้ — ใบที่ลูกค้าโหลด เหมือนกับใบที่ร้านพิมพ์เองทุกตัวอักษร
🔒 สิ่งที่ยังไม่หลุดออกไปเหมือนเดิม — อาการที่แจ้ง และ รหัสปลดล็อกเครื่อง ยังถูกตัดออกจากใบฝั่งลูกค้าเสมอ (ช่อง "อาการที่แจ้ง" เป็นช่องที่บางร้านเคยพิมพ์รหัสปลดล็อกปนไว้) · เลขบัตรประชาชนของลูกค้าก็ไม่เคยถูกส่งออกไป · เอกสารชนิดอื่นที่ลูกค้าโหลดได้ ได้ไฟล์เหมือนเดิมทุกไบต์ ไม่มีอะไรเปลี่ยน
⭐⭐ 5 ก.ย. 2569 — การ์ด "ค่าใช้จ่าย" บอกชัดแล้วว่ารายการไหนแถมหรือถูกลดราคา
อาการเดิมที่ร้านแจ้งมา — งานหนึ่งเปลี่ยนจอ ฿1,800 และ ติดฟิล์มแถม (ปกติ ฿150)
การ์ดเดิมพิมพ์ว่า ค่าบริการ ฿150 · รวมค่าบริการ ฿150 แต่ ราคารวม ฿1,800
⇒ ลูกค้าบวกเองแล้วได้ ฿1,950 ไม่ตรง จึงคิดว่าระบบคิดเงินไม่ถูก
ตอนนี้แสดงแบบนี้แทน · รายการที่แถม → มีป้าย "ของแถม" ท้ายชื่อรายการ · ราคาเต็ม ขีดฆ่า · ยอดจริง ฿ 0 · รายการที่ลดราคา → ราคาเต็มขีดฆ่า · ยอดจริงหลังลด · บรรทัดเล็กบอก "ลด ฿X" · ⇒ บวกยอดทุกบรรทัดที่เห็นแล้วเท่ากับ "ราคารวม" เสมอ
· 🔴 ใบเก่าที่ไม่มีของแถมและไม่มีส่วนลด แสดงเหมือนเดิมทุกอย่าง — ไม่มีป้าย ไม่มีขีดฆ่าโผล่มา · ร้านไม่ต้องตั้งค่าอะไร — ระบบอ่านจากช่อง "ของแถม" และ "ส่วนลด" ที่ร้านกรอกในรายการอะไหล่/ค่าบริการอยู่แล้ว
📍 หน้า (ลูกค้าใช้): /track และ /track/{slug}/{repairId}
👤 สิทธิ์: ลูกค้า — ไม่ต้องล็อกอิน (public, anyone with link)
วัตถุประสงค์: ให้ลูกค้าติดตามสถานะการซ่อมแบบเรียลไทม์เอง ไม่ต้องโทรถามร้าน — เหมือนติดตามพัสดุ Kerry/Flash
กลไก 3 ช่องทางที่ลูกค้ารู้ URL:
| ช่องทาง | วิธี | ครอบคลุม |
|---|---|---|
| 1. QR Code บนใบรับเครื่อง | สแกน QR ด้วยกล้องมือถือ | 95% case |
2. กรอกเลขใน /track | กรอก เลขเดียว (8 ตัวอักษร เช่น F340-38A4) — เหมือนเช็คพัสดุไปรษณีย์ ไม่ต้องระบุชื่อร้าน | กรณีทำใบหาย |
Single-field UX (เหมือน Kerry/Flash/ไปรษณีย์):
F340-38A4) ในกรอบ cyan/teal เด่นชัด/track → ระบบค้นข้าม tenant (UUID unique ทั้งระบบ) → redirect ไปหน้า detail อัตโนมัติF34038A4, F340-38A4, f34038a4 (case + dash insensitive)ข้อมูลที่ลูกค้าเห็น (ก่อนยืนยัน):
ข้อมูลเพิ่ม (หลังยืนยันด้วย 4 ตัวท้ายเบอร์โทร):
🔒 ไม่แสดง "อาการที่แจ้ง" บนหน้านี้ (ปรับ 16 ส.ค. 2569) — เพราะหลายร้านใช้ช่องนั้นจดสิ่งที่ ไม่ควรออกสู่สาธารณะ เช่น รหัสปลดล็อกเครื่องลูกค้า ซึ่งจะหลุดออกไปทันทีที่ใครก็ตามรู้เลขใบ (พิมพ์อยู่บนกระดาษ + QR) แล้วเดา 4 ตัวท้ายเบอร์ได้ · ลูกค้าไม่เสียข้อมูลอะไร เพราะเขาเป็นคนแจ้ง อาการเองอยู่แล้ว ส่วนที่เขาอยากรู้จริงคือช่างวินิจฉัยว่าอะไรเสีย ซึ่งยังแสดงอยู่ · เบอร์โทรเต็มก็ถูกตัดออกด้วย — 4 ตัวท้ายคือ "รหัสผ่าน" ของด่านนี้ ถ้าผ่านด่านแล้วได้เบอร์ครบ ด่านจะกลายเป็นเครื่องขยายข้อมูลแทนที่จะเป็นเครื่องกัน · มีช่องเก็บรหัสปลดล็อกให้แล้วที่หน้ารับเครื่อง (ดู §5.1) — เก็บในระบบ ไม่พิมพ์ลงใบ ไม่ออกหน้านี้
การออกแบบใบรับซ่อม:
INTAKE_RECEIPT) มี block QR + URL ที่ footer (cyan/teal gradient) แสดง:
https://โดเมน/track/{tenant.slug}/{repairId} (สแกนเปิดได้เลย)ความปลอดภัย:
💡 ข้อแนะนำ: ตอนรับเครื่อง ให้พนักงานบอกลูกค้าว่า "สแกน QR บนใบนี้เพื่อติดตามได้ตลอด 24 ชม." จะลดสายโทรเข้าได้มาก
⭐ ใหม่ 1 ก.ย. 2569 — หน้าติดตามแบบเต็ม: รูปเครื่อง · ดาวน์โหลดเอกสาร · ประวัติสถานะ (แพ็คเกจ โปรเฟสชันนอล ขึ้นไป)
ปัญหาที่แก้: ร้านหลายแห่งส่งของให้ลูกค้าทาง LINE ทีละไฟล์ — สลิป · ใบประกัน · ใบรับทราบผลตรวจ · รูปเครื่อง 10 ใบ · ข้อความขอบคุณ รวม ~15 ชิ้นต่อ 1 งานซ่อม ซึ่งกินเวลาจนไปเบียดงานอื่นหน้าร้าน
ทางแก้: ส่ง ลิงก์เดียว แล้วลูกค้าเปิดดูเองได้ทุกอย่างตลอดเวลา
| การ์ดใหม่ในหน้าติดตาม | เห็นอะไร |
|---|---|
| รูปเครื่องจากร้าน | รูปที่ร้านถ่ายไว้ในใบงาน · แตะดูเต็มจอได้ · เลื่อนดูทีละใบ · ⭐ ถ้าร้านใส่รูปหลังซ่อมไว้ จะแยกเป็น "ก่อนซ่อม" / "หลังซ่อม" |
| เอกสาร | รายการเอกสารของงานนั้น + ปุ่มดาวน์โหลด PDF สำหรับใบที่ระบบสร้างไฟล์ได้ |
| ประวัติสถานะ | ไล่ตั้งแต่รับเครื่องจนส่งมอบ พร้อมวันเวลาและเลขที่เอกสาร |
🔒 ทั้ง 3 การ์ดอยู่หลังด่านยืนยัน 4 ตัวท้ายเบอร์โทรเหมือนเดิม — คนที่รู้แค่เลขใบยังเปิดไม่ได้
⚠️ ป้ายที่ลูกค้าเห็น ขึ้นกับว่าร้านใส่รูปหลังซ่อมไว้หรือยัง — ระบบไม่เดาให้ ⭐ ปรับ 1 ก.ย. 2569 · ร้านยังไม่ได้ใส่รูปหลังซ่อม ⇒ การ์ดเดียว ป้าย "รูปเครื่องจากร้าน" เหมือนเดิมทุกประการ (รูปที่เก็บไว้ก่อนหน้านี้ แยกไม่ได้ว่าถ่ายก่อนหรือหลัง จึงไม่ติดป้ายที่ยืนยันไม่ได้) · ร้านใส่รูปหลังซ่อมแล้ว ⇒ แยกเป็น "ก่อนซ่อม" และ "หลังซ่อม" ให้ลูกค้าเทียบได้ · ร้านที่ถ่ายเฉพาะหลังซ่อม ⇒ เห็นกลุ่ม "หลังซ่อม" กลุ่มเดียว
🔴 งานเก่าทุกใบยังแสดงเหมือนเดิม — ระบบไม่ย้ายรูปเก่าไปช่องใหม่ให้อัตโนมัติ (ดู §5.3B)
เอกสารบางใบขึ้นว่า "ขอไฟล์ที่ร้าน" แทนปุ่มดาวน์โหลด — ใบชนิดนั้นระบบยังไม่ได้สร้างเป็นไฟล์ PDF (พิมพ์จากหน้าจอร้านอย่างเดียว) · ไม่ใช่ความผิดพลาด ลูกค้าขอจากร้านได้ตามปกติ
⭐ ปุ่ม "คัดลอกลิงก์ติดตาม" ที่หน้างานซ่อม (ทุกแพ็คเกจ) เดิมลิงก์นี้มีแต่ QR บนกระดาษ ⇒ ร้านพิมพ์เองไม่ได้ · ตอนนี้มีปุ่มคัดลอกทั้งใน การ์ดบนมือถือ และ ตารางบนเดสก์ท็อป กดแล้ววางลง LINE ได้ทันที · ลิงก์ที่คัดลอก เป็นเส้นเดียวกับที่ QR บนใบรับซ่อมชี้ไป ไม่ใช่คนละเส้น
⭐ ใบรับประกันงานซ่อมดาวน์โหลดเป็น PDF ได้แล้ว — เดิมพิมพ์จากหน้าจออย่างเดียว (ร้านต้องกด "บันทึกเป็น PDF" ของเบราว์เซอร์เอง) · ตอนนี้ระบบสร้างไฟล์ให้ พร้อมฟอนต์ไทยฝังในไฟล์ ⇒ เปิดที่เครื่องไหนก็อ่านออก · ใบนี้จึงโผล่เป็นปุ่มดาวน์โหลดในหน้าติดตามของลูกค้าด้วย
ร้านที่แพ็คเกจไม่ถึงโปรเฟสชันนอล — หน้าติดตามยังทำงานเหมือนเดิมทุกอย่าง (สถานะ · วันนัด · ข้อมูลเครื่อง) แค่ไม่มี 3 การ์ดใหม่ · ลูกค้าไม่เห็นข้อความผิดพลาดใด ๆ
📍 ปุ่ม: ไอคอน 💵 สีเขียวในแถวงานซ่อมที่ /repair
👤 สิทธิ์: ทุกคนที่เข้าหน้างานซ่อมได้
ใช้เมื่อร้านตั้งโหมด "เก็บเงินที่เคาน์เตอร์ซ่อม" (ค่าเริ่มต้น — ดู §6.10) ถ้าร้านตั้งเป็นเก็บที่หน้าขาย ปุ่มนี้จะไม่ขึ้น เพราะเงินต้องผ่านแคชเชียร์เท่านั้น
ปุ่มจะโผล่เมื่อครบทุกข้อ
ขั้นตอน
เดิมระบบบันทึกแค่ว่า "เก็บเงินแล้ว" แต่ไม่เก็บว่ารับมาทางไหน ทำให้:
ตอนนี้เมื่อระบุวิธีแล้ว:
| วิธี | ผลต่อยอดปิดกะ |
|---|---|
| เงินสด | เข้าลิ้นชัก → บวกใน "เงินที่ควรมี" ของกะที่กำลังเปิดอยู่ |
| โอนเงิน / บัตร | แยกเป็นยอดเข้าบัญชี ไม่บวกเข้าเงินสด |
ℹ️ ผูกกับกะอัตโนมัติ — ถ้าคนที่กดรับเงินเปิดกะอยู่ เงินก้อนนี้จะเข้ากะนั้นทันที ถ้าไม่ได้เปิดกะ ระบบก็รับเงินให้ตามปกติแต่ไม่ผูกกะ (ร้านที่ไม่เคยเปิดกะจึงไม่มีอะไรเปลี่ยน)
⚠️ ช่างซ่อม (บทบาทช่างอย่างเดียว) เปิดกะไม่ได้แล้ว ตั้งแต่ 19 ส.ค. 2569 (ดู §10B)
เงินที่ช่างกดรับเอง ยังบันทึกได้ตามปกติ และยังขึ้นในหน้า "ยอดรับเงินวันนี้" แต่จะ ไม่ผูกกับกะไหน จึงไม่ไปโผล่ในยอด "เงินสดที่ควรมีในลิ้นชัก" ตอนปิดกะ
ร้านที่อยากให้ค่าซ่อมเข้ายอดปิดกะครบ ทำได้ 2 ทาง — (1) ให้คนที่เปิดกะอยู่เป็นคนกดรับเงิน (แคชเชียร์ / พนักงานขาย / ผู้จัดการ / เจ้าของร้าน) หรือ (2) เพิ่มบทบาท พนักงานขาย ให้ช่างคนนั้นที่หน้า ผู้ใช้งาน (§14.2) — เขาจะกลายเป็น ช่างขาย และเปิดกะได้
| สถานการณ์ | ระบบทำอะไร |
|---|---|
| กด "ส่งคืนแล้ว" ในฟอร์มแก้ไขงาน | ถือว่าเก็บเงินแล้ว → ฟอร์มจะขึ้นช่อง "วิธีรับเงิน" ให้เลือกก่อนบันทึก |
| ส่งคืนเครื่องทั้งที่ยังไม่ได้ลงราคา | ส่งคืนได้ตามปกติ แต่ระบบจะยังไม่บันทึกว่ารับเงินแล้ว — ฟอร์มขึ้นกล่องส้มเตือนให้ทราบ พอลงค่าแรง/ค่าอะไหล่ทีหลัง ปุ่ม 💵 จะกลับมาให้เก็บเงินได้ตามปกติ |
| งานยอด ฿0 (เคลมประกัน / ซ่อมฟรี) | ไม่ต้องเลือกวิธี เพราะไม่มีเงินเข้า แต่ต้องระบุเหตุผลในช่องหมายเหตุ |
| แก้ที่บันทึกผิด → กลับเป็นยังไม่จ่าย | ล้างวิธีรับเงินและถอนออกจากยอดปิดกะให้อัตโนมัติ |
| ยกเลิกงานซ่อม | ล้างการรับเงินทั้งหมด ไม่ค้างอยู่ในยอดกะ |
⚠️ ทำไมงานที่ยังไม่ลงราคาถึงไม่ถูกนับว่ารับเงินแล้ว (แก้ 4 ส.ค. 2569) เดิมการกด "ส่งคืนแล้ว" จะบันทึกว่า จ่ายแล้ว ฿0 ทันทีแม้ยังไม่ได้ลงราคา ทำให้งานนั้นหลุดออกจากคิวรอชำระ ปุ่มรับเงินหายไป และสแกนที่หน้าขายก็ขึ้นว่า "จ่ายแล้ว" — เก็บเงินงานนั้นไม่ได้อีกเลย เกิดบ่อยเวลาหน้าร้านคืนเครื่องก่อนที่ช่างจะกรอกค่าแรง ตอนนี้งานจะค้างเป็น "ยังไม่จ่าย" ไว้ให้เก็บเงินย้อนหลังได้
⚠️ งานที่เก็บเงินก่อน ส.ค. 2569 จะขึ้นว่า "ไม่ระบุวิธี" ตลอดไป — ระบบไม่เคยเก็บข้อมูลนั้นไว้ และจงใจไม่เดาว่าเป็นเงินสด เพราะถ้าเดาผิดจะทำให้ตัวเลขเก่าดูน่าเชื่อถือทั้งที่มั่ว
⭐⭐ 8 ก.ย. 2569 — ใบส่งคืนหลังเคลม พิมพ์เวลาที่ปิดเคลมจริงแล้ว
อาการเดิมที่ร้านแจ้งมา — กดปิดเคลมตอน 16:13 แต่ใบส่งคืนพิมพ์ 14:56 เพราะใบไปอ่าน เวลาที่รับเครื่องเข้าเคลม ทั้งที่ป้ายบนใบเขียนว่า "วันที่ส่งคืน" ⇒ กระดาษที่ลูกค้าถือกลับพูดไม่ตรงความจริง ซึ่งมีน้ำหนักตอนมีข้อโต้แย้งเรื่องประกัน · ผิดทั้ง 4 จุดบนใบ (วันที่กับเวลาบนหัวใบ และวันที่ในช่องเซ็นอีก 2 ช่อง)
ตอนนี้
| โหมดของใบ | อ่านเวลาจาก |
|---|---|
| ใบรับเครื่องเข้าเคลม | เวลาที่รับเครื่อง — ไม่เปลี่ยนเลย เหมือนเดิมทุกอย่าง |
| ใบส่งคืนหลังเคลม | เวลาที่กดปิดเคลม |
⚠️ ใบเก่าที่ระบบยังไม่ได้บันทึกเวลาปิดเคลมไว้ จะขึ้น - ที่ช่องวันที่และเวลา
และช่องเซ็นเป็นเส้นประให้เขียนด้วยมือ — ยังพิมพ์ใบได้ตามปกติ ไม่บล็อก
เหตุผล: ระบบจะไม่เดาเวลาให้ เพราะถ้าเดาแล้วพิมพ์ใบเดิมซ้ำอีกครั้ง เวลาจะเปลี่ยนทุกครั้งที่พิมพ์
ซึ่งแย่กว่าการบอกตรง ๆ ว่าไม่มีข้อมูล · เคลมที่ปิดตั้งแต่นี้เป็นต้นไปจะมีเวลาครบเสมอ
📍 หน้า: /repair-warranty
👤 สิทธิ์: OWNER, ADMIN, MANAGER, SALESTECH (ช่างธรรมดา ไม่เห็น)
วัตถุประสงค์: บันทึกและติดตามประกันงานซ่อม รับเรื่องเคลมประกัน
ฟิลด์ประกันงานซ่อม:
| ฟิลด์ | คำอธิบาย |
|---|---|
| งานซ่อม | เชื่อมกับรายการซ่อมที่บันทึกไว้ |
| วันเริ่มประกัน | วันที่เริ่มต้นประกัน — นับจากวันที่กดออกใบ ไม่ใช่วันที่ลูกค้ามารับเครื่อง |
| วันหมดประกัน | วันที่สิ้นสุดประกัน (ของระยะที่ยาวที่สุดในใบ) |
| รายการที่รับประกัน | แยกระยะรายรายการได้ เช่น จอ 30 วัน · แบตเตอรี่ 365 วัน ในใบเดียวกัน |
| เงื่อนไขประกัน | รายละเอียดความครอบคลุม / ข้อยกเว้น |
| สถานะ | ใช้งานอยู่ (ACTIVE) · หมดอายุ (EXPIRED) · ยกเลิก (VOIDED) |
⚠️ สถานะ "เคลมแล้ว" (CLAIMED) เลิกใช้แล้วตั้งแต่ 17 ส.ค. 2569 — ใบจะเป็น ใช้งานอยู่ ตราบใดที่ยังไม่ถึงวันหมด แล้วเปลี่ยนเป็น หมดอายุ เอง · ใบเก่าที่ค้างสถานะนี้อยู่จะถูกปรับให้ถูกต้องโดยผู้ดูแลระบบ
งานซ่อมใบเดียวมักมีหลายรายการที่รับประกันไม่เท่ากัน — เช่นเปลี่ยนจอรับประกัน 30 วัน แต่เปลี่ยนแบตเตอรี่รับประกัน 1 ปี ระบบรองรับในใบเดียว ไม่ต้องพิมพ์รวมกันในช่องความคุ้มครองอีก
/repair-documents → ใบประกัน) จะมีส่วน "รายการที่รับประกัน"บนใบที่พิมพ์: ตัวเลขใหญ่กลางใบคือ ระยะที่ยาวที่สุด ส่วนกล่องเขียว "ความคุ้มครอง" จะไล่รายการพร้อมวันหมดของแต่ละตัว แล้วตามด้วยข้อความความคุ้มครองเดิม
⚠️ ประกันเริ่มนับ ตั้งแต่วันที่กดออกใบ — ถ้าเครื่องยังไม่ส่งมอบ ลูกค้าจะเสียวันประกันเท่าที่เครื่องค้างที่ร้าน ควรออกใบตอนส่งมอบเครื่อง
การเคลมประกัน:
⭐ เคลมกี่รอบก็ได้จนกว่าจะถึงวันหมดประกัน (แก้ 17 ส.ค. 2569) เดิมใบที่ไม่ได้ระบุรายการย่อย พออนุมัติเคลมรอบแรกแล้วจะถูกปิด เคลมอีกไม่ได้เลยตลอดกาล และค้นหาใบนั้นไม่เจอด้วย ทำให้ขึ้นว่า "ไม่พบใบประกัน" ซึ่งดูเหมือนพิมพ์เลขผิด ตอนนี้ตัวตัดสินคือ วันหมดประกัน อย่างเดียว — เคลมซ้ำได้ทั้งใบระยะเดียวและใบหลายรายการ · ใบที่ ยกเลิก (VOIDED) ยังเคลมไม่ได้เหมือนเดิม · ใบหลายรายการ: เคลมจอไปแล้ว แบตเตอรี่ที่เหลืออีก 300 กว่าวันยังเคลมได้ตามปกติ · ใบจะขึ้นว่า "หมดอายุ" ก็ต่อเมื่อ หมดครบทุกรายการ
⭐ การเคลมไม่ขยายวันหมดประกัน (แก้ 17 ส.ค. 2569) วันหมดประกันยึดตาม ใบแรก เสมอ — เปลี่ยนแบตวันที่ 17/08/69 ประกัน 184 วัน หมดวันที่ 15/02/70 มาเคลมกี่รอบ ประกันก็หมดวันที่ 15/02/70 เหมือนเดิม เดิมใบส่งคืนหลังเคลมพิมพ์ข้อความว่าร้านจะขยายประกันเพิ่มให้ นับจากวันส่งคืนเครื่อง ซึ่ง ไม่ตรงกับที่ระบบทำจริง (ระบบไม่เคยขยายให้) และทำให้พิมพ์ใบเดิมซ้ำคนละวันได้วันหมดคนละวัน — ข้อความนั้นถูกเอาออกแล้ว
💡 ตัวกรอง "เคยเคลม" ในหน้ารายการ หมายถึงใบที่เคยมีการยื่นเคลม อย่างน้อย 1 ครั้ง — รวมเคลมที่ยังรออนุมัติและที่ถูกปฏิเสธด้วย ไม่ใช่เฉพาะที่อนุมัติแล้ว ป้ายบนการ์ดใช้เกณฑ์เดียวกัน ขึ้นว่า "เคยเคลม N ครั้ง" · รายละเอียดว่ารอบไหนผลเป็นอย่างไร ดูในใบ
📍 หน้า: /sales
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: ระบบขายสินค้าหน้าร้าน (Point of Sale) รองรับสินค้าทั้งมือถือและอุปกรณ์เสริม
⚠️ ก่อนเริ่มขาย — เปิดกะการขาย (ถ้าจำเป็น)
ตามมาตรฐาน POS สากล (Microsoft Dynamics, Shopify, Lightspeed) — แคชเชียร์ + พนักงานขาย (ค่าเริ่มต้น) ต้อง เปิดกะการขาย (กรอกเงินสดตั้งต้นในลิ้นชัก) ก่อนรับเงินจากลูกค้า. หน้าขายจะแสดงแถบสีส้ม + ปุ่ม "ไปเปิดกะการขาย" ถ้ายังไม่เปิด — กดเข้าไปกรอกเงินทอนเริ่มต้นแล้วกดเปิดกะ จากนั้นกลับมาขายได้.
เจ้าของร้าน / ผู้ดูแลระบบ / ผู้จัดการ ขายได้ตรง ไม่ต้องเปิดกะ (ค่าเริ่มต้น). เจ้าของร้านปรับนโยบายได้ที่ /settings → "นโยบายกะการขาย" — เลือกบทบาทที่ต้องบังคับ หรือเคลียร์ทั้งหมดเพื่อปิดการบังคับ.
🔒 ช่างซ่อม (บทบาทช่างอย่างเดียว) เข้าหน้ากะการขายไม่ได้แล้ว ตั้งแต่ 19 ส.ค. 2569 — ข้อความเดิมตรงนี้ที่เขียนว่าช่างซ่อม "ขายได้ตรง ไม่ต้องเปิดกะ" ตกรุ่นไปแล้ว · ช่างที่ต้องรับเงินค่าซ่อมที่เคาน์เตอร์เอง ดู §5.9
ดูรายละเอียดการเปิด-ปิดกะ + variance check ที่ §10B.
⭐ ใหม่ ส.ค. 2569 — แตะการ์ดสินค้าแล้วเคาะราคาที่จะคิดได้เลย ตั้งต้นเป็นราคาในระบบ กดแก้ผ่านคีย์แพดตัวเลขใหญ่ ปรับจำนวนในหน้าต่างเดียวกัน ถ้ากดต่ำกว่าราคาตั้งหรือต่ำกว่าทุน ระบบเตือนพร้อมบอกกำไรที่เหลือ (เตือนอย่างเดียว ไม่บล็อก) การกด Enter จากช่องค้นหาและการยิงบาร์โค้ดไม่เด้งหน้าต่างนี้ — เพิ่มลงตะกร้าทันทีตามราคาตั้ง เพื่อให้ยิงรัวได้ไม่สะดุด · รายละเอียดที่ §6.12
⭐ แก้ 4 ส.ค. 2569 — ตะกร้าไม่มีแถบเลื่อนแนวนอนอีกแล้ว เดิมเมื่อย่อหน้าต่างลงมาราว 1,130px (และบนแท็บเล็ตแนวนอน) แผงตะกร้าจะแคบเกิน จนคอลัมน์ "จำนวน" กับ "รวม" หลุดออกนอกจอ ต้องเลื่อนแนวนอนถึงจะเห็น และเครื่องหมาย ฿ ตกไปอยู่คนละบรรทัดกับตัวเลข
ตอนนี้แต่ละรายการเป็นการ์ดที่จัดใหม่:
แผงตะกร้าถูกขยายจาก 4/12 เป็น 5/12 ของความกว้าง และกริดสินค้าบนจอขนาดกลาง ลดเหลือ 2 คอลัมน์เพื่อให้การ์ดสินค้าใหญ่พออ่าน IMEI ได้
Layout — Split Screen (Shopify POS pattern):
หน้าจอแบ่งเป็น 2 คอลัมน์ — ตะกร้าอยู่ขวาเสมอ ไม่ต้อง scroll หาข้อมูล
┌─ ซ้าย (lg=8) ─────────────┐ ┌─ ขวา (lg=4) ──────┐
│ [ทั้งหมด][โทรศัพท์][อุปกรณ์] │ │ ตะกร้าสินค้า (3) [⛌][🗑]│
│ 🔍 ค้นหา... [สแกน]│ │ ────────────────│
│ ┌──────────────────────┐ │ │ ► iPhone 13 │
│ │ 📱 iPhone 13 ┃ ฿17,900│ │ │ ► เคสกัน │
│ │ IMEI ... ┃ พร้อมขาย│ │ │ ────────────────│
│ │ 📱 iPhone 14 ┃ ฿24,900│ │ │ สรุปการชำระเงิน │
│ │ 🎧 เคสกัน ┃ ฿690 │ │ │ ลูกค้า: ... │
│ │ ┃ 5 ชิ้น│ │ │ ยอดรวม ฿xxx │
│ └──────────────────────┘ │ │ ส่วนลด: 0 │
│ (scroll ในกล่องผลค้นหา) │ │ ─────────────── │
└──────────────────────────┘ │ ยอดชำระ ฿xxx │
│ [เงินสด][PP][โอน]│
│ [ ยืนยันการขาย ] │
└─────────────────┘
ขั้นตอนการขาย:
+/− ในตะกร้าค้นหาสินค้า — 3 ทาง:
× ล้างคำค้นหาVisual Catalog Grid (โหลดสินค้าทั้งหมดไว้ตั้งแต่เริ่ม):
ระบบ pre-load สินค้าพร้อมขาย + อุปกรณ์เสริมทั้งหมดของสาขาไว้แล้ว แสดงเป็น การ์ดรูปภาพ ทันทีที่เปิดหน้า — cashier ไม่ต้องพิมพ์ก็เห็นทุกอย่าง — เลือกแตะได้เลย หรือพิมพ์เพื่อกรอง
Header แสดงจำนวน:
สินค้าทั้งหมด N รายการผลการค้นหา N รายการCard layout (compact 2-4 cols ตามขนาดจอ):
| ส่วน | สิ่งที่แสดง |
|---|---|
| รูปสินค้า (height 96px) | รูปจริง (cover) / fallback IconDeviceMobile หรือ IconHeadphones บน gradient เทา |
| Badge ขวาบน | จำนวนคงเหลือ (numeric เสมอ): 🟢 N ชิ้น (≥5) · 🟠 N ชิ้น (<5) · 🔴 หมด — คำนวณจาก stock − ที่อยู่ใน cart เห็นยอดที่ใส่ตะกร้าได้จริง |
| Badge ซ้ายล่าง | ประเภทสินค้า: cyan "มือถือ" · grape "อุปกรณ์" |
| ชื่อสินค้า | 2-line clamp, dark.8 fw 600 |
| IMEI/SKU | 9px monospace gray-6 |
| ราคา | sm fw 700 cyan-7 + tabular-nums |
Interaction:
ตะกร้าสินค้าขวา (Cart Card):
สรุปการชำระเงิน (Summary Card — ใต้ตะกร้า):
Empty + Loading states:
Auto-refresh + Cart-aware:
Performance optimizations (สำหรับร้านที่สต็อกเยอะ):
loading="lazy" — โหลดเฉพาะการ์ดที่อยู่ใน viewport (ลดภาระ network ลง 80% สำหรับร้านสต็อก 100+)⚠️ เดิมตะกร้าไม่ถูกล้างเมื่อสลับสาขา และไม่มีอะไรบอก — ของที่หยิบไว้ตอนอยู่สาขา ก ยังอยู่ในตะกร้าหลังสลับไปสาขา ข ทำให้ ขายของที่เป็นสต๊อกของสาขา ก ด้วยบิลที่ออก ในนามสาขา ข ได้ ซึ่งทำให้ทั้งยอดขายและจำนวนสต๊อกของทั้งสองสาขาผิดพร้อมกัน
ตอนนี้ถ้าสลับสาขาขณะที่ตะกร้ายังมีของ ระบบจะ ถามก่อนเสมอ โดยแสดง
แล้วให้เลือก 2 ทาง
| ปุ่ม | ผล |
|---|---|
| ล้างตะกร้าแล้วสลับ | ตะกร้าถูกล้าง แล้วสลับไปสาขาใหม่ |
| ยกเลิก | อยู่สาขาเดิมต่อ ตะกร้าไม่ถูกแตะ ขายต่อได้ทันที |
✅ ถ้าตะกร้าว่างอยู่แล้ว จะสลับได้ทันทีโดยไม่ถามอะไร เหมือนเดิม
💡 บิลที่พักไว้ (Park) ไม่หายไปไหน — บิลพักผูกกับสาขาที่พักไว้ สลับกลับมาที่สาขานั้นเมื่อไรก็เปิดขึ้นมาขายต่อได้
| วิธี | ไอคอน | รายละเอียด |
|---|---|---|
| เงินสด (Cash) | 💵 | รับเงินสด — กรอกจำนวนรับ ระบบคำนวณเงินทอน |
| โอนเงิน (Transfer) | 🏦 | โอนผ่านธนาคาร — บันทึกเลขอ้างอิง |
| บัตรเครดิต (Credit Card) | 💳 | รูดบัตร — บันทึกเลขอนุมัติ |
| PromptPay | 📱 | สร้าง QR Code PromptPay อัตโนมัติ |
| โครงการรัฐ (เป๋าตัง) | 🏛️ | รับผ่านแอปถุงเงิน — ดู §6.13 |
💡 บิลเดียวจ่ายได้หลายช่องทาง เช่น รับผ่านเป๋าตัง ฿333 + เงินสดที่เหลือ — ดู §6.13
ขั้นตอน:
⚠️ หมายเหตุ: ตั้งค่าเบอร์ PromptPay ได้ที่ ตั้งค่า → ข้อมูลร้านค้า → PromptPay Phone
📍 หน้า: /customer-display
📦 แพ็คเกจ: Professional หรือ Enterprise (ฟีเจอร์นี้ถูกล็อคในแพ็คเกจ Starter)
การใช้งาน:
⚠️ ถ้าแพ็คเกจของคุณยังไม่รวม ปุ่ม "เปิดจอลูกค้า" จะถูกซ่อนอัตโนมัติ — ต้องอัพเกรดเป็น Professional ขึ้นไป
💡 เคล็ดลับ: ใช้ได้ทั้งจอ Monitor เพิ่มเติม หรือแท็บเล็ตที่ตั้งหันหาลูกค้า
📍 เปิดได้ที่: ปุ่ม "พักบิล" ในตะกร้า + ปุ่ม "บิลที่พักไว้ (N)" มุมขวาบน
วัตถุประสงค์: เก็บตะกร้าค้างไว้ก่อนชำระ — เช่น ลูกค้าเดินไปดูเคสเพิ่ม, หาเงินก่อน, ขอเปลี่ยนใจ → cashier กดพักบิลเพื่อรับลูกค้าคนถัดไปได้ทันที, ตอนกลับมาเปิด "บิลที่พักไว้" → restore cart → ชำระต่อ
ขั้นตอน:
สิ่งที่บันทึก:
⭐ แก้แล้ว ส.ค. 2569: เดิมพักบิลที่มีค่าซ่อมหรือเครื่องเทรดอิน แล้วเปิดกลับมา รายการเหล่านั้นจะหายไป แต่ยอดเงินยังถูกหักค่าเครื่องเก่าอยู่ ทำให้ตัวเลขอธิบายไม่ได้และปิดบิลไม่ผ่าน ตอนนี้เก็บครบทุกอย่างแล้ว
⭐ แก้แล้ว ส.ค. 2569: เดิมกด "เปิดบิลนี้" ขณะที่ตะกร้ายังมีของอยู่ ระบบทับของเดิมทิ้งเงียบ ๆ โดยไม่ถาม ตอนนี้มีหน้าต่างยืนยันบอกจำนวนรายการที่จะหายก่อนเสมอ
สิ่งที่ ยังไม่ทำ ตอนพักบิล:
ข้อสังเกต:
💡 เคล็ดลับ: ทุกคืนปิดร้านควรเช็ค "บิลที่พักไว้" → ถ้ามีค้างให้ตัดสินใจว่าจะ checkout หรือลบ ไม่ปล่อยค้างหลายวัน
📍 หน้า: /sales-history
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: รวมงาน post-checkout ทั้งหมดในที่เดียว — ดูประวัติบิล / พิมพ์ใบเสร็จซ้ำ / ยกเลิกบิล / คืนเงิน / ปิดยอดสิ้นวัน
⭐ แก้ 4 ส.ค. 2569 — พิมพ์ใบเสร็จซ้ำแล้วชื่อรายการค่าซ่อมขึ้นเป็น "-" เกิดเฉพาะ บรรทัดค่าบริการซ่อม ในบิลที่เก็บเงินค่าซ่อมผ่าน POS (§6.10) บรรทัดสินค้าและอุปกรณ์เสริมไม่เคยได้รับผลกระทบ
อาการ: ใบเสร็จที่เปิดทันทีหลังกดยืนยันการขาย แสดงชื่อถูกต้อง แต่พอกลับมาพิมพ์ซ้ำ
จากหน้าประวัติการขาย ช่อง "รายการ" กลับเป็น - ส่วนจำนวนและยอดเงินยังถูกต้อง
ตอนนี้พิมพ์ซ้ำได้ชื่อเต็มเหมือนกันทุกครั้ง เช่น ค่าซ่อม Samsung Galaxy A54
พร้อมเลขที่งานและ IMEI ใต้ชื่อ — ใบเสร็จเก่าที่พิมพ์ไปแล้วไม่ต้องแก้อะไร
เปิดพิมพ์ใหม่จะได้ชื่อที่ถูกต้องทันที (ข้อมูลในระบบไม่เคยหาย เป็นเรื่องการแสดงผลล้วน ๆ)
เลขที่ใบเสร็จ: ทุกบิลใหม่จะได้เลขรูปแบบ RC-{branchCode}-{BEyear}-{seq:04} (เช่น RC-HQ-2569-0001 = บิลใบแรกของสาขา HQ ปี พ.ศ. 2569) — เลขรันต่อเนื่อง ทั้งปีภาษี (reset 1 ม.ค.) แยกต่อสาขา ตามกฎสรรพากร (ประกาศอธิบดี ว.196/2553) ดูรายละเอียดที่ §12.0
ตัวกรอง:
ตาราง (desktop) / Card (mobile):
ใน SaleDetailModal → ปุ่ม "พิมพ์ใบเสร็จ" (สีฟ้า) → เปิด Receipt modal เดียวกับตอนขาย → เลือก thermal 80mm หรือ A4 → พิมพ์
💡 ใช้กรณี: ลูกค้ากลับมาบอกว่า "หาใบเสร็จไม่เจอขอใหม่" → ค้นหาบิลด้วยเบอร์โทร / IMEI → กดพิมพ์ซ้ำ
📍 ปุ่ม "ยกเลิกบิล" (สีแดง) ใน SaleDetailModal — แสดงเฉพาะบิลสถานะ ใช้งาน + role ADMIN/OWNER
ขั้นตอน:
บิลที่ยกเลิกแล้ว: ดูได้ตลอด แต่พิมพ์ใบเสร็จไม่ได้ + ไม่นับยอดในรายงาน + ไม่นับใน Z report
📍 ปุ่ม "คืนเงิน" (สีส้ม) ใน SaleDetailModal — role MANAGER/ADMIN/OWNER
Wizard 3 ขั้นตอน:
Step 1 — เลือกรายการที่คืน:
Step 2 — วิธี + เหตุผล:
Step 3 — ตรวจสอบ:
สถานะหลังคืนเงิน:
⚠️ คืนเงินไม่ได้ถ้าบิลสถานะ: ยกเลิกแล้ว / คืนเงินทั้งบิลแล้ว
📍 ปุ่ม "ปิดยอดวันนี้" มุมขวาบนของหน้า /sales-history
ใช้ทำอะไร: สรุปยอดทุกอย่างของวันนั้น สำหรับเช็คเงินสดในลิ้นชัก / นำส่งหัวหน้า / เก็บเป็นหลักฐาน — มาตรฐาน retail ทั่วโลก เรียกว่า "Z Report"
เนื้อหา:
| ส่วน | รายละเอียด |
|---|---|
| 3 KPI | บิลทั้งหมด + บิลยกเลิก + ครั้งที่คืนเงิน |
| สรุปยอด | ยอดขายรวม − VAT − คืนเงิน = รายได้สุทธิ |
| แยกตามวิธีชำระ (รับเข้า) | เงินสด / โอน / บัตร — แต่ละแบบ บิลกี่ใบ ยอดเท่าไหร่ |
| แยกตามวิธีคืนเงิน (จ่ายออก) | เงินสด / โอน / เครดิต — แต่ละแบบ ครั้งกี่ครั้ง ยอดเท่าไหร่ |
| ยอดเงินสดคงเหลือในลิ้นชัก (คาดหมาย) | = เงินสดเข้า − เงินสดคืน → ตัวเลขที่ควรนับเจอตอนปิดร้าน |
พิมพ์ Z Report: A4 — มี 2 ช่องลายเซ็น (Cashier ผู้ปิดยอด + ผู้ตรวจสอบ) เก็บไว้เป็นเอกสารตอนปิดร้าน
เลือกวันได้: Default เป็นวันนี้ — เปลี่ยนวันที่เพื่อดู Z Report ย้อนหลังได้
💡 เคล็ดลับ: ปิดร้านทุกคืนให้พิมพ์ Z Report → นับเงินสดในลิ้นชัก → เทียบกับ "ยอดเงินสดคงเหลือคาดหมาย" → ถ้าไม่ตรง ต้องหาสาเหตุก่อนเลิกงาน
📍 ตำแหน่ง: ปุ่มในหน้า /sales POS (ใต้ cart summary)
👤 สิทธิ์: ทุก role ที่ขายได้
วัตถุประสงค์: ลูกค้าที่ซื้อเครื่องใหม่มักอยากเอาเครื่องเก่ามาตีเครดิต. ก่อนหน้านี้ cashier ต้องทำ 2 transactions แยก (Purchase + Sale) → cashier งง + ตีเงินไปกลับไปกลับมา + ไม่มี link ระหว่างเครื่องเก่ากับ sale
Workflow ใหม่ — เซลเดียว:
total) แสดงเฉพาะ net amount due = สิ่งที่ลูกค้าต้องจ่ายเพิ่มPurchase (เครื่องเก่าเข้าระบบ)Product ใหม่จาก purchase (status=AVAILABLE in stock, source=TRADE_IN)Sale ของเครื่องใหม่ + เซ็ต tradeInPurchaseId, tradeInValue, netAmountDueข้อดี:
ลบเครื่องเทรด: กดไอคอนถังขยะที่บรรทัด violet → ลบออกก่อน checkout (ก่อน save = แก้ได้)
📍 หน้า: /refunds
👤 สิทธิ์: OWNER, ADMIN, MANAGER
วัตถุประสงค์: ระบบ Refund มีอยู่แล้วฝังใน /sales-history (refund per sale) แต่ไม่มีหน้า list รวม + analytics — ตอนนี้มี
Stat cards:
Filters:
List view:
ใช้สำหรับ:
📍 หน้า: /invoices
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: ลูกค้าบุคคลจ่ายทันที — ลูกค้าบริษัท (ตัวแทน, ออฟฟิศซื้อยกล็อต) อยากได้ "ใบแจ้งหนี้" + เครดิต net-30/60 จ่ายภายหลัง. ระบบนี้รองรับ B2B workflow ครบ
Customer setup ก่อน:
ใน /customers form เพิ่ม fields ใหม่:
1. VAT คิดแบบ "ถอด" ไม่ใช่ "บวก"
⚠️ เดิมระบบบวก VAT ทับยอดที่กรอก — ใส่ราคา ฿1,000 แล้วกรอก VAT 70 ได้ยอดรวม ฿1,070 ทั้งที่ราคาสินค้าในระบบเป็น ราคารวม VAT อยู่แล้ว = เก็บ VAT ซ้ำสองรอบ
ตอนนี้ระบบคำนวณให้เอง: ยอด ฿1,000 → VAT ที่รวมอยู่แล้ว ฿65.42 · ยอดรวมยังเป็น ฿1,000
2. เลขที่เอกสารขึ้นต้นด้วย SINV-
⚠️ เดิมใช้ INV- ซ้ำกับใบแจ้งหนี้งานซ่อม ทำให้เอกสารคนละประเภทมีเลขเดียวกันได้
ในสาขาและปีเดียวกัน ซึ่งสืบย้อนไม่ได้
✅ ใบที่ออกไปแล้วเลขไม่เปลี่ยน ยังเป็น INV- เหมือนเดิมทุกใบ — ระบบไม่แก้เลขเอกสาร
ที่ยื่นให้ลูกค้าไปแล้วย้อนหลัง
**3. เดินดูได้ทุกหน้า + แท็บ "เกินกำหนด" ใช้งานได้
เดิมหน้านี้แสดง 50 รายการแล้วจบ ใบเก่ากว่านั้นเปิดดูไม่ได้เลย ตอนนี้มีปุ่มเปลี่ยนหน้า และเลือกจำนวนต่อหน้าได้ (25/50/100) · แท็บ "เกินกำหนด" กรองจากวันครบกำหนดจริง
4. ใบร่าง (ยังไม่ออกเลข)
บันทึกใบไว้ก่อนโดยยังไม่ออกเป็นเอกสารจริงได้ · ใบร่าง ยังไม่กินเลขที่เอกสาร เลขจะออกตอนกด "ออกใบ" · และ ใบร่างไม่ถูกนับในยอดเงินรวมและยอดค้างชำระ
💡 กดสร้างตามปกติยังได้ใบที่ออกแล้วทันทีเหมือนเดิม — การบันทึกร่างเป็นทางเลือกเพิ่ม
5. ⭐ ออกใบแล้วสต๊อกลดจริง (ใหม่ 23 ส.ค. 2569)
⚠️ เดิมออกใบแจ้งหนี้แล้วสต๊อกไม่ขยับเลย — ขายมือถือผ่านใบแจ้งหนี้ไปแล้ว เครื่องนั้น ยังขึ้นว่า "พร้อมขาย" และขายซ้ำได้อีก · อุปกรณ์เสริมก็ไม่ถูกตัดจำนวน
ตอนนี้เมื่อกด "ออกใบ" ระบบจะ:
ยกเลิกใบ → คืนของเข้าคลังให้อัตโนมัติ · แต่มี ช่องติ๊กปิดการคืน สำหรับกรณีที่ ลูกค้ารับของไปแล้วจริง ๆ (ติ๊กแล้วระบบจะบอกบนหน้าจอว่าไม่ได้คืนของ)
💡 ใบร่างไม่ตัดสต๊อก — แก้ไข/ลบได้อิสระเหมือนเดิม สต๊อกขยับตอนกด "ออกใบ" เท่านั้น
6. ⭐ เงินที่รับเข้ารายงานรายได้และภาษีแล้ว (ใหม่ 23 ส.ค. 2569)
⚠️ เดิมออกใบแจ้งหนี้และรับเงินไปแล้ว ยอดนั้นไม่โผล่ในรายงานการเงินเลยสักบาท — ยอดขายเชื่อจึงหายไปจากกำไร/ขาดทุนและจากรายงานภาษี
ตอนนี้:
| นับเมื่อไร | |
|---|---|
| รายได้ — ร้านบุคคลธรรมดา | ตอนรับเงินจริง (เกณฑ์เงินสด) · ออกใบแล้วยังไม่จ่าย = ยังไม่นับ |
| รายได้ — ร้านนิติบุคคล | ตอนออกใบ (เกณฑ์สิทธิ ตามที่กฎหมายกำหนดสำหรับนิติบุคคล) |
| VAT ขาย | ตอนออกใบเสมอ ทั้ง 2 แบบ — ตามประมวลรัษฎากร ม.78 |
| ต้นทุนขาย | ตามเกณฑ์เดียวกับรายได้ของร้านนั้น |
💡 VAT กับรายได้อยู่คนละเดือนได้ และนั่นถูกต้อง — ร้านบุคคลธรรมดาที่จด VAT จะยื่น ภ.พ.30 ในเดือนที่ออกใบ แต่นับเป็นรายได้ในเดือนที่ได้รับเงินจริง
เพิ่มยอด "ลูกหนี้การค้า" — ยอดที่ออกใบไปแล้วแต่ยังเก็บเงินไม่ได้ ทำให้เห็นว่า ของที่หายจากคลังไปนั้น กลายเป็นเงินที่ลูกค้ายังค้างอยู่ ไม่ใช่ของหาย
⚠️ ใบที่ระบบไม่มีบันทึกว่ารับเงินวันไหน จะยังไม่ถูกนับเป็นรายได้ (ระบบไม่เดาวันย้อนหลัง) ถ้าร้านเคยแก้ยอดชำระโดยไม่ผ่านปุ่ม "บันทึกรับเงิน" ให้บันทึกรับเงินใหม่ให้ถูกต้อง
🔴 หมายเหตุสำคัญ: เกณฑ์การรับรู้รายได้และ VAT ข้างต้นอ้างอิงประมวลรัษฎากร แต่ควรให้นักบัญชีของร้านตรวจสอบให้ตรงกับวิธีที่ร้านใช้ยื่นจริง โดยเฉพาะร้านนิติบุคคล
/invoices → ออก invoice)Workflow:
Customer.currentDebtใน detail modal กด บันทึกรับเงิน:
InvoicePayment recordInvoice.paidAmount += amountPARTIAL_PAID (ถ้า paidAmount < totalAmount) / PAID (ถ้าเต็ม)Customer.currentDebt💵 รับเงินสดค่าใบแจ้งหนี้ที่เคาน์เตอร์ — อย่าลืมบันทึกเข้าลิ้นชักด้วย ⭐ ใหม่ 23 ส.ค. 2569
เงินที่รับผ่านหน้าใบแจ้งหนี้ ไม่ถูกนับเข้ากะโดยอัตโนมัติ — ตั้งใจให้เป็นแบบนั้น เพราะใบแจ้งหนี้เป็นงานหลังร้าน ลูกค้าส่วนใหญ่โอนเข้าบัญชีทีหลัง ไม่ได้จ่ายที่หน้าเคาน์เตอร์ (มาตรฐานเดียวกับระบบ POS ร้านซ่อมเจ้าอื่น — รายงานปิดยอดนับเฉพาะเงินที่รับ ที่เครื่องขาย)
🔴 แต่ถ้าลูกค้าจ่ายเงินสดที่เคาน์เตอร์แล้วเงินอยู่ในลิ้นชักจริง ต้องบันทึกเป็น "เงินเข้าลิ้นชัก" ด้วย ไม่งั้นตอนปิดกะจะ นับเงินได้เกินโดยไม่มีคำอธิบาย
ระบบช่วยแล้ว — เลือกวิธีชำระเป็น เงินสด ขณะที่คุณเปิดกะอยู่ จะมี:
✅ กดซ้ำไม่ได้ ⭐ ใหม่ 24 ส.ค. 2569 — เงินก้อนเดียวบันทึกเข้าลิ้นชักได้ ครั้งเดียวเท่านั้น ถ้ากดซ้ำ (หรือเน็ตสะดุดแล้วกดใหม่) ระบบจะขึ้นว่า "บันทึกไปแล้ว" และไม่เพิ่มยอดให้อีก — ไม่ต้องกลัวว่าเงินในกะจะเกินเพราะกดหลายที
⚠️ ขึ้นเฉพาะ "เงินสด" เท่านั้น — โอน / เช็ค / บัตรเครดิต ไม่ใช่เงินในลิ้นชัก เอาไปบันทึกเป็นเงินเข้าจะทำให้ยอดที่ควรมีในลิ้นชักผิดไปอีกทาง · และขึ้นเฉพาะเมื่อ คุณมีกะเปิดอยู่ที่สาขานั้น — ไม่ได้เปิดกะก็ไม่มีอะไรให้เพี้ยน
📄 ดาวน์โหลดใบแจ้งหนี้เป็น PDF ⭐ ใหม่ 24 ส.ค. 2569
เปิดใบแจ้งหนี้ → ปุ่ม "ดาวน์โหลด PDF" → ได้ไฟล์ที่ส่งต่อทางอีเมล/LINE หรือพิมพ์ได้เลย
สิ่งที่อยู่บนเอกสาร: ชื่อ/ที่อยู่/เลขผู้เสียภาษีของร้าน · ข้อมูลลูกค้า · รายการทั้งหมด · ยอดรวม–ชำระแล้ว–คงเหลือ · เงื่อนไขการชำระเงิน · พร้อมเพย์ของสาขา (ถ้าตั้งไว้) · ช่องเซ็น 2 ช่อง
· ร้านที่ไม่ได้จด VAT จะไม่มีบรรทัดภาษีบนเอกสารเลย (ไม่ใช่แสดง 0%) · ใบที่ยกเลิกแล้ว ยังโหลดได้ และมีแถบบอกชัดว่า "ใช้เรียกเก็บเงินไม่ได้" พร้อมเหตุผล · ฉบับร่าง โหลดได้เช่นกัน และพิมพ์คำว่า "ฉบับร่าง" กำกับ — ส่งให้ลูกค้าดูก่อนออกใบจริงได้
⚠️ เอกสารนี้คือ "ใบแจ้งหนี้" ไม่ใช่ "ใบกำกับภาษี" แม้ร้านจะจด VAT แล้ว เพราะใบกำกับภาษีตามกฎหมายต้องมีข้อความระบุว่าผู้ซื้อเป็น "สำนักงานใหญ่" หรือ "สาขาที่ ..." ซึ่งระบบยังไม่มีช่องให้กรอก — ถ้าต้องออกใบกำกับภาษี ยังต้องออกนอกระบบไปก่อน
🏪 เลือกได้เฉพาะเครื่องของสาขาที่ออกใบ ⭐ ใหม่ 24 ส.ค. 2569
ช่องค้นหามือถือในหน้าออกใบ แสดงเฉพาะเครื่องที่อยู่ใน สาขาที่คุณเลือกอยู่บนหัวจอ (เดิมแสดงเครื่องของทุกสาขาปนกัน)
🔴 ทำไมถึงสำคัญ — ตั้งแต่ 23 ส.ค. 2569 การออกใบแจ้งหนี้ ตัดเครื่องออกจากคลังจริง ถ้าเผลอหยิบเครื่องของอีกสาขามาใส่ใบ มูลค่าสต๊อกของสาขานั้นจะลดลง ทั้งที่เครื่องยังอยู่ที่นั่น และไม่มีอะไรบอกเลยว่าเกิดอะไรขึ้น
ถ้าลูกค้าอยากได้เครื่องที่อยู่อีกสาขา ให้ โอนเครื่องมาที่สาขาที่จะออกใบก่อน (เมนู "โอนสาขา") แล้วค่อยออกใบ · ถ้าใส่ไปแล้ว ระบบจะปฏิเสธพร้อมบอกชื่อเครื่องและทางแก้
💡 ใบที่ บันทึกค้างไว้เป็นร่าง ก่อนวันนี้ ถ้ามีเครื่องข้ามสาขาอยู่ข้างใน จะกดออกใบไม่ผ่าน — แก้ได้โดยเปิดร่างนั้นแล้วเปลี่ยนเป็นเครื่องของสาขาที่ออกใบ
| สถานะ | คำอธิบาย |
|---|---|
| DRAFT | ร่าง (ปัจจุบันไม่ได้ใช้ — ออก invoice = ISSUED ทันที) |
| ISSUED | ออกแล้ว รอจ่าย |
| PARTIAL_PAID | จ่ายแล้วบางส่วน |
| PAID | จ่ายเต็มแล้ว |
| OVERDUE | เลยกำหนด (ระบบ flag color แดง — manual update หรือ cron) |
| CANCELLED | ยกเลิก |
4 Stat cards บน list: จำนวน / รวมยอด / รับเงินแล้ว / คงค้าง (สีส้มถ้า > 0)
Tabs: ทั้งหมด / รอจ่าย / เกินกำหนด / จ่ายแล้ว
UI hints:
💡 Tip: ตั้ง creditLimit ให้ลูกค้า CORPORATE ทุกราย — ป้องกันออก invoice ใหม่ตอน debt เกินวงเงิน → หลีกเลี่ยง bad debt
⚠️ หน้าตั้งค่ามี 2 ปุ่มบันทึก แยกตามขอบเขต (เปลี่ยน 4 ส.ค. 2569)
| ปุ่ม | คุมอะไร | ขอบเขต |
|---|---|---|
| บันทึกข้อมูลสาขา | ชื่อร้าน · ที่อยู่ · เบอร์ · VAT · โลโก้ · เป้ายอด | เฉพาะสาขาที่เลือกอยู่ |
| บันทึกนโยบายร้าน | บทบาทที่ต้องเปิดกะ · วิธีรับเงินค่าซ่อม | ทุกสาขาในร้าน |
เดิมเป็นปุ่มเดียวคุมทั้ง 2 อย่าง ทำให้ แก้แค่ชื่อร้านแล้วกดบันทึก อาจเผลอเปลี่ยนวิธีรับเงินค่าซ่อม กลับไปเป็น "เก็บที่เคาน์เตอร์" โดยไม่ได้ตั้งใจ แล้วปุ่ม "งานซ่อมรอชำระ" หายจากหน้าขาย ตอนนี้แยกปุ่มแล้ว การบันทึกข้อมูลสาขาจะไม่แตะนโยบายร้านอีก
ร้านเลือกได้ว่าจะเก็บเงินค่าซ่อม ที่เคาน์เตอร์ซ่อม (แบบเดิม) หรือ ที่แคชเชียร์ เหมือนร้านอาหารที่ออกบิลแล้วไปจ่ายที่แคชเชียร์
📍 ตั้งค่า: /settings → หัวข้อ "การรับเงินค่าซ่อม" (เฉพาะเจ้าของร้าน · มีผลทุกสาขา)
| โหมด | ใครเก็บเงิน | เงินเข้ากะไหม |
|---|---|---|
| เก็บที่เคาน์เตอร์ซ่อม (ค่าเริ่มต้น) | ช่าง/พนักงานกด "ส่งมอบแล้ว" ที่หน้างานซ่อม แล้วเลือกวิธีรับเงิน (เงินสด / โอน / บัตร) — งานที่มียอดมากกว่า ฿0 ถูกบันทึกว่าเก็บเงินแล้ว | เข้ากะ ถ้าคนที่กดเปิดกะอยู่ (ถ้าไม่ได้เปิดกะ เงินยังถูกบันทึกแต่ไม่ผูกกับกะไหน) |
| เก็บที่หน้าขาย (POS) | แคชเชียร์สแกน QR บนใบรับซ่อมแล้วรับเงินเหมือนขายสินค้า | เข้ากะ ปิดยอดตรง |
📌 ค่าซ่อมที่รับเป็นเงินสดจะไปโผล่ในสูตรปิดกะบรรทัด "+ ค่าซ่อม" ทั้งสองโหมด (ข้อมูลเดิมในคู่มือเคยเขียนว่าโหมดเคาน์เตอร์ซ่อม "เงินไม่เข้ากะ" ซึ่งตกรุ่นไปแล้ว)
⚠️ ยกเว้นกรณีเดียว — ถ้าคนที่กดรับเงินเป็นช่างซ่อมบทบาทเดียว เขาเปิดกะไม่ได้ตั้งแต่ 19 ส.ค. 2569 เงินจึงถูกบันทึกไว้ครบแต่ ไม่ผูกกับกะไหน · วิธีจัดการอยู่ที่ §5.9
⚠️ เลือกโหมดแล้วต้องกดปุ่ม "บันทึกนโยบายร้าน" ด้วย — ปุ่มนี้อยู่มุมขวาล่างของกล่อง "การรับเงินค่าซ่อม" และเป็นคนละปุ่มกับ "บันทึกข้อมูลร้าน" (ชื่อร้าน/ที่อยู่/VAT/โลโก้) ที่แยกออกจากกันเพราะ 2 อย่างนี้คนละขอบเขต — อันหนึ่งมีผล ทุกสาขา อีกอันมีผล เฉพาะสาขานี้
🔧 ถ้าเลือกโหมด POS แล้วบันทึกแล้ว แต่ปุ่ม "งานซ่อมรอชำระ" ยังไม่ขึ้นที่หน้าขาย (แก้ 4 ส.ค. 2569)
ก่อนหน้านี้ระบบจำค่าโหมดไว้ในเครื่องที่ใช้งาน แล้วไม่ยอมไปอ่านค่าใหม่อีกเลย เครื่องที่เคยเปิดหน้าขายไว้ตอนยังเป็นโหมดเดิม จึงไม่รู้ว่าเจ้าของร้านสลับโหมดไปแล้ว เกิดอาการ "เครื่องหนึ่งเห็นปุ่ม อีกเครื่องไม่เห็น" ทั้งที่เป็นร้านเดียวกัน
ตอนนี้แก้แล้ว — ระบบอ่านค่าจริงใหม่ทุกครั้งที่เข้าสู่ระบบและทุกครั้งที่เปิดหน้าขาย ถ้ายังเจออาการนี้บนเครื่องที่ยังไม่ได้ออกจากระบบตั้งแต่ก่อนอัปเดต ให้ออกจากระบบแล้วเข้าใหม่ 1 ครั้ง
F340-38A4)เครื่องยังอยู่ที่ร้านได้หลังจ่ายเงิน — ระบบแยก "จ่ายเงินแล้ว" กับ "รับเครื่องกลับแล้ว" ออกจากกัน
| ป้าย | หมายความว่า |
|---|---|
| ยังไม่ลงราคา | ช่างยังไม่ใส่ค่าแรง/ค่าอะไหล่ — เก็บเงินไม่ได้จนกว่าจะลงราคา |
| ยอด ฿0 | งานฟรี/เคลมประกัน — เก็บได้แต่ระบบจะถามยืนยัน |
| ส่งเครื่องไปแล้ว | เครื่องออกจากร้านแล้วแต่ยังไม่จ่าย — ตรวจสอบก่อน |
| ออกใบเสร็จแล้ว | เคยพิมพ์ใบเสร็จซ่อมไปแล้ว อาจเก็บเงินนอกระบบไปแล้ว |
| คนละสาขา | งานรับที่สาขาอื่น — ต้องให้ผู้จัดการยืนยันก่อนเก็บ |
| งานเก่า | เสร็จก่อนวันที่เปิดโหมดนี้ (ดูหมายเหตุด้านล่าง) |
| สถานการณ์ | ทำอย่างไร |
|---|---|
| เก็บเงินผิดบิล | ยกเลิกบิลที่ /sales-history → งานกลับเข้าคิวอัตโนมัติ |
| คืนเงินค่าซ่อมให้ลูกค้า | คืนเงินที่บิล → งานกลับเข้าคิวรอชำระให้อัตโนมัติ สแกนเก็บเงินใหม่ได้ทันที |
| อยากแก้ราคางานที่ออกบิลแล้ว | ต้องยกเลิกบิลก่อน ระบบล็อกไว้ไม่ให้แก้ (ไม่งั้นเอกสารกับตัวเลขไม่ตรงกัน) |
ℹ️ การคืนเงินคืนงานเข้าคิวให้เองแล้ว (แก้ 4 ส.ค. 2569) เดิมคืนเงินไปแล้วงานยังผูกอยู่กับบิลเดิมและยังขึ้นว่า "จ่ายแล้ว" ปุ่ม "คืนงานเข้าคิว" ของผู้จัดการก็กดไม่ผ่าน (ระบบมองว่าบิลยังรับเงินอยู่) และบิลที่คืนเงินเต็มใบก็ยกเลิกไม่ได้แล้ว — งานติดค้างกับบิลนั้นถาวร ตอนนี้พอคืนเงินบรรทัดค่าซ่อม งานจะถูกปลดออกจากบิลและกลับเป็น "ยังไม่จ่าย" ให้เอง ถ้าบิลมีทั้งค่าซ่อมและสินค้า แล้วคืนเฉพาะสินค้า ค่าซ่อมจะยังผูกกับบิลอยู่ตามเดิม (เงินส่วนนั้นยังอยู่ที่ร้าน)
📍 หน้า: /daily-takings — เมนู ขาย & ลูกค้า → ยอดรับเงินวันนี้
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER
ปัญหาที่หน้านี้แก้: เก๊ะเงินมีใบเดียว แต่เงินมาจาก 2 ทาง (ขายสินค้า + ค่าซ่อม) เดิมต้องเปิดสองหน้ามาบวกกันเอง ตอนปิดร้านเลยเทียบกับเงินสดในลิ้นชักยาก หน้านี้รวมทุกอย่างเป็น ลิสต์รายการเดียว เรียงตามเวลาที่รับเงินจริง
หน้าตา
| ส่วน | แสดงอะไร |
|---|---|
| การ์ดบน 4 ใบ | ขายสินค้า · งานซ่อม (เก็บเงินแล้ว) · คืนเงิน · รวมสุทธิ |
| ตัวเลือกวันที่ | เลือกย้อนหลังได้ (ปฏิทิน พ.ศ.) — default = วันนี้ |
| ลิสต์รายการ | ทีละบรรทัด: เวลา · ประเภท (ขาย/ซ่อม/คืนเงิน) · เลขที่อ้างอิง · ลูกค้า · พนักงาน · จำนวนเงิน |
| ปุ่มรีเฟรช | ดึงข้อมูลใหม่โดยไม่ต้องโหลดหน้าซ้ำ |
กฎการนับเงินที่ต้องเข้าใจ (ไม่งั้นจะงงว่าทำไมตัวเลขไม่ตรงกับที่คิดไว้)
แยกตามวิธีรับเงิน — ตัวเลขที่เอาไปนับกับลิ้นชักได้จริง
หน้านี้แยกให้ว่าเงินก้อนไหนเข้าทางไหน เพราะ "รวมสุทธิ" กับ "เงินสดในลิ้นชัก" ไม่ใช่เลขเดียวกัน
| ช่อง | หมายความว่า |
|---|---|
| เงินสด | เข้าลิ้นชักจริง — เอาไปเทียบกับเงินที่นับได้ตอนปิดร้าน |
| เงินโอน / บัตร | เข้าบัญชีร้าน ไม่ได้อยู่ในลิ้นชัก |
| เครดิตร้าน | คืนเป็นเครดิตให้ลูกค้าใช้ครั้งหน้า ไม่ได้ควักเงินออกจากลิ้นชัก |
| ไม่ระบุวิธี | ค่าซ่อมที่เก็บก่อน ส.ค. 2569 ซึ่งระบบยังไม่เคยเก็บว่ารับทางไหน |
⚠️ ถ้าเห็นยอด "ไม่ระบุวิธี" ให้ตรวจกับสมุดของร้านเอง — ระบบไม่เดาว่าเป็นเงินสด เพราะถ้าเดาผิดจะทำให้ปิดยอดไม่ตรงโดยไม่รู้ตัว งานที่เก็บเงินหลัง ส.ค. 2569 จะมีวิธีรับเงินครบทุกก้อน (ดู §5.9)
2 ยอดเงินสดที่หน้านี้แสดง — คนละความหมาย ห้ามสับสน ⭐ ใหม่ 19 ส.ค. 2569
| ยอด | คิดจาก | เอาไปทำอะไร |
|---|---|---|
| เงินสดที่ควรมีในลิ้นชัก | เงินทอนเริ่มต้น + เงินสดที่ขายได้ − คืนเงินสด + เติมเข้าลิ้นชัก − หยิบออกจากลิ้นชัก | นับเทียบกับเงินในเก๊ะจริง ตอนปิดร้าน |
| เงินสดที่ขายได้ | เฉพาะเงินสดที่รับเข้ามาในวันนั้น (ไม่มีเงินทอนเริ่มต้น) | ดูว่าวันนี้ขายเป็นเงินสดได้เท่าไหร่ |
⚠️ เดิมหน้านี้แสดงยอดเดียว โดยใช้ป้ายว่า "เงินสดที่ควรมีในลิ้นชัก" แต่คำนวณแบบยอดที่สอง ⇒ ต่ำกว่าเงินจริงในเก๊ะเท่ายอดเงินทอนเริ่มต้นทุกวัน (ร้านแจ้งเข้ามาเอง) แก้แล้ว 19 ส.ค. 2569
💡 ยอด "เงินสดที่ควรมีในลิ้นชัก" คิดจาก กะล่าสุดของแต่ละสาขา และใช้สูตรเดียวกับหน้ากะ (/shift) ⇒ 2 หน้าจะไม่มีทางบอกเลขต่างกัน · ใต้ตัวเลขมีบรรทัดเล็กบอกที่มาให้ครบทุกก้อน เอาไว้ไล่หาส่วนต่างตอนนับเงินไม่ตรง
ร้านที่มี หลายกะในวันเดียว ระบบจะไม่บวกเงินทอนของทุกกะรวมกัน เพราะปิดกะแล้วร้านหยิบยอดขายออกแต่เหลือเงินทอนไว้ในเก๊ะ กะถัดไปจึงคีย์เงินทอนก้อนเดิมซ้ำ — บวกรวมกันจะได้เลขสูงเกินจริง
⚠️ วันที่ยังไม่มีการเปิดกะ ระบบจะไม่แสดงยอดนี้ แต่ขึ้นข้อความบอกว่ายังบอกไม่ได้ เพราะไม่รู้เงินทอนเริ่มต้น — ห้ามอ่านว่าเงินเป็นศูนย์
💡 ใช้คู่กับ "กะการขาย" — ถ้าปิดกะแล้วเงินไม่ตรง ให้เปิดหน้านี้ไล่ดูทีละรายการ
ต้นทุนและกำไรขั้นต้นของวันนั้น ⭐ ใหม่ 26 ส.ค. 2569
ร้านแจ้งเข้ามาว่า "เวลาสรุปยอดการขาย ไม่มีต้นทุนโชว์เลย" — ตอนนี้หน้านี้มีบล็อก "ต้นทุน & กำไรขั้นต้น" เพิ่มขึ้นมา
| ยอด | หมายความว่า |
|---|---|
| ฐานรายได้ (ตามราคาขาย) | ราคาขายเต็ม + ค่าซ่อม − คืนเงิน · ไม่ใช่ "รวมเงินรับทั้งวัน" ถ้ามีเครื่องเทรดอิน |
| ต้นทุนมือถือ / อุปกรณ์เสริม / อะไหล่ | แยกเป็น 3 ก้อน จะได้รู้ว่ากำไรหายไปทางไหน |
| กำไรขั้นต้น | ฐานรายได้ − รวมต้นทุน · มี อัตรากำไร (%) กำกับ |
🔴 ต้นทุนคิดจากฐานเดียวกับยอดรับเงิน คือ "วันที่รับเงินจริง" ไม่ใช่วันที่ปิดงาน ⇒ งานซ่อมที่ปิดเมื่อวานแต่มาเก็บเงินวันนี้ ต้นทุนจะมาอยู่วันนี้ให้ตรงกับเงินที่รับ ถ้าคิดคนละฐาน จะได้วันที่ "รายได้มี ต้นทุน 0" สลับกับวันที่ "ต้นทุนมี รายได้ 0" ทั้งที่ไม่มีอะไรผิด
กดที่บิลเพื่อดูต้นทุนและกำไรรายชิ้น ⭐ ใหม่ 26 ส.ค. 2569 · 🔒 แพ็คเกจ Professional ขึ้นไป
ร้านถามต่อว่า "แยกเป็นรายการได้มั้ยครับ ให้รู้ว่าแต่ละชิ้นที่ขายไป ต้นทุนเท่าไหร่" — กดลูกศรหน้าแถวบิลได้เลย
🔒 ส่วน "รายชิ้น" นี้อยู่ในแพ็คเกจ Professional ขึ้นไป (ตั้งแต่ 27 ส.ค. 2569) ร้านแพ็คเกจ Starter จะเห็นปุ่มกางและปุ่ม Excel เป็นสีเทาพร้อมป้าย (PRO+) — ปุ่มยังอยู่ที่เดิม ไม่ได้ถูกซ่อน 🔴 ตัวเลขปิดร้านและ "ต้นทุนรวม / กำไรขั้นต้น" ของทั้งวัน ไม่ถูกจำกัด — ทุกแพ็คเกจเห็นเหมือนเดิมทุกช่อง ที่จำกัดคือการแยกดูเป็นรายชิ้นกับการโหลด Excel รายชิ้นเท่านั้น 💡 ช่วงทดลองใช้ (TRIAL) เปิดให้ครบทุกฟีเจอร์ ⇒ ร้านที่กำลังทดลองอยู่จะเห็นรายชิ้นได้ตามปกติ แล้วจึงเจอป้าย (PRO+) หลังหมดทดลอง ถ้าเลือกแพ็คเกจ Starter
⚠️ "ต้นทุน ฿0.00" กับ "ไม่ทราบต้นทุน" คนละเรื่อง — หน้าจอแยกให้แล้ว ฿0.00 = ร้านยังไม่ได้กรอกต้นทุนของชิ้นนั้น (แก้ได้ที่หน้าคลังสินค้า) ไม่ทราบ = ระบบไม่มีต้นทุนให้เลย เช่นรายการที่พนักงานพิมพ์ชื่อเองตอนขาย ไม่ได้เลือกจากคลัง ⇒ ชิ้นที่ "ไม่ทราบ" จะถูกนับเป็นกำไรเต็มจำนวน ⇒ กำไรจริงจะต่ำกว่าที่แสดง ระบบขึ้นแถบเตือนบอกไว้ทุกครั้ง 💡 อยากให้ตัวเลขแม่น: ให้พนักงาน เลือกสินค้าจากคลังแทนการพิมพ์ชื่อเอง
⚠️ บิลที่รับเครื่องเก่าแลก (เทรดอิน) ผลรวมรายชิ้นจะไม่เท่ายอดบิล — เพราะยอดบิลคือ เงินที่รับจริง ส่วนรายชิ้นคือ ราคาขาย · ส่วนต่างคือมูลค่าเครื่องที่รับแลก ซึ่งกลายเป็นเครื่องในสต็อก ไม่ได้หายไปไหน · หน้าจอขึ้นบรรทัดอธิบายให้แล้ว
⚠️ ต้นทุนอุปกรณ์เสริมเป็นราคา ณ ปัจจุบัน ไม่ใช่ ณ วันที่ขาย — ระบบไม่ได้เก็บต้นทุนไว้ในบิล และการรับของเข้าจะทับต้นทุนทั้งกอง (ยังไม่ถัวเฉลี่ย) ⇒ ถ้าเพิ่งรับของราคาใหม่เข้ามา ต้นทุนของบิลเก่าจะขยับตาม · หน้าจอมีหมายเหตุกำกับทุกแถว
⚠️ อะไหล่ที่ไม่มีต้นทุนจากคลัง ระบบใช้ราคาที่คิดลูกค้าแทน (ค่าประมาณ) ⇒ กำไรของแถวนั้นจะเป็น ฿0 ทั้งที่จริงอาจมีกำไร · เกิดกับอะไหล่ที่ช่างพิมพ์ชื่อเองไม่ได้ผูกคลัง
💡 ของแถมมีต้นทุน — แถวของแถมจะขึ้น ขาย ฿0 · ทุน (ตามจริง) · กำไรติดลบ ซึ่งถูกต้อง ไม่ใช่ข้อผิดพลาด เพราะของแถมคือต้นทุนที่ร้านจ่ายไปจริง
💡 บรรทัด "ผลรวมต้นทุนของรายการที่กางดูได้ … ต่างจากรวมต้นทุนด้านบน" จะขึ้นเมื่อ 2 ยอดไม่เท่ากัน พร้อมบอกเหตุผลทุกก้อน — เหตุผลที่พบบ่อยคือ ของที่คืนเงินแล้วกลับเข้าคลัง ซึ่งยอดรวมหักต้นทุนคืนให้ แต่รายชิ้นไม่หัก เพราะใบคืนเงินผูกกับ ใบคืน ไม่ใช่ บิลขาย
💡 บิลที่ไม่มีลูกศรกาง = บิลที่ไม่มีรายการย่อยในระบบ ไม่ใช่ข้อมูลขาด
ปัญหาที่แก้: ร้านมีของที่ขายประจำแต่ไม่อยากตามนับจำนวน (ฟิล์ม สายชาร์จเบ็ดเตล็ด ค่าบริการย่อย) เดิมถ้าไม่ลงจำนวนไว้ ของจะหายจากหน้าขายทันทีที่เหลือ 0 พนักงานจึงต้องไปเบียดยอดใส่บรรทัดอื่นแทน ทำให้ทั้งสต็อกและรายงานเพี้ยน
📍 /accessories → เพิ่ม/แก้ไขสินค้า → สวิตช์ "นับสต๊อกสินค้านี้"
| สวิตช์ | ระบบทำอะไร |
|---|---|
| เปิด (ค่าเริ่มต้น) | ตัดจำนวนทุกครั้งที่ขาย · เตือนเมื่อของใกล้หมด · ขายเกินจำนวนที่มีไม่ได้ |
| ปิด | ไม่ตัดจำนวน · ไม่เตือนของหมด · ขายได้เรื่อย ๆ ไม่จำกัด · อยู่บนหน้าขายตลอด |
เมื่อปิดสวิตช์ ช่อง "จำนวนเริ่มต้น" กับ "แจ้งเตือนเมื่อต่ำกว่า" จะถูกซ่อน เพราะไม่มีความหมายแล้ว
ℹ️ ไม่โผล่ในลิสต์ "ใกล้หมด" แล้ว (แก้ 4 ส.ค. 2569) ตอนแรกของที่ปิดการนับสต๊อกยังไปขึ้นในตัวกรอง "สินค้าใกล้หมด" และในตัวเลขบนป้ายเตือนทุกตัว เพราะจำนวนเป็น 0 ซึ่งต่ำกว่าเกณฑ์เตือนเสมอ ทำให้รายการของจริงที่ใกล้หมดถูกกลบจนสั่งของผิด ตอนนี้กรองออกให้แล้วทั้งลิสต์และตัวเลขบนป้าย ส่วนของที่ยังนับสต๊อกเตือนเหมือนเดิมทุกประการ ในรายการสินค้าจะขึ้นป้าย "ไม่นับสต๊อก" สีครามแทนตัวเลขคงเหลือ
✅ ของเดิมไม่กระทบสักชิ้น — สินค้าที่มีอยู่แล้วทั้งหมดถือว่า "นับสต๊อก" เหมือนเดิมทุกประการ ✅ สลับกลับได้ตลอด — วันหลังอยากเริ่มนับจำนวนก็เปิดสวิตช์ ระบบบังคับเพดานให้ทันที
แตะการ์ดสินค้า ที่หน้าขาย → เด้งคีย์แพดตัวเลขใหญ่ขึ้นมา (ตั้งต้นเป็นราคาในระบบ)
+50 +100 +500 และปุ่มลบทีละตัว| ทางเข้า | เด้งคีย์แพดไหม |
|---|---|
| แตะการ์ดสินค้า | ✅ เด้ง — สำหรับตอนต่อราคากับลูกค้า |
| พิมพ์ค้นหาแล้วกด Enter | ❌ ไม่เด้ง — เพิ่มทันทีตามราคาตั้ง |
| ยิงบาร์โค้ด | ❌ ไม่เด้ง — ยิงรัวต้องไม่สะดุด |
ระบบเตือนอะไรบ้าง
| กรณี | สิ่งที่เห็น |
|---|---|
| กดต่ำกว่าราคาตั้ง | กล่องส้ม — บอกว่าลดไปเท่าไรต่อชิ้น และเหลือกำไรเท่าไร |
| กดต่ำกว่าทุน | กล่องแดง — บอกว่าขาดทุนกี่บาทต่อชิ้น |
| ราคาติดลบ | ไม่ให้ผ่าน |
| กดจำนวนเกินสต็อก (เฉพาะของที่นับสต๊อก) | ไม่ให้ผ่าน พร้อมบอกจำนวนที่มีจริง |
⚠️ เป็นการเตือน ไม่ใช่การบล็อก — พนักงานยังกดขายต่ำกว่าทุนได้ เพราะการต่อราคาเป็นเรื่องปกติของร้านมือถือ และการบล็อกกลางคันจะทำให้ปิดการขายไม่ได้ต่อหน้าลูกค้า ถ้าร้านอยากล็อกให้แข็งกว่านี้ (เช่น ต่ำกว่าทุนต้องให้ผู้จัดการอนุมัติ) แจ้งทีมงานเพิ่มให้ได้
ถ้าเจอของที่ขายนาน ๆ ครั้งจนไม่อยากตั้งเป็นสินค้าถาวร ให้สร้างสินค้ากลาง ๆ ไว้ตัวเดียว เช่นชื่อ "ของเบ็ดเตล็ด" แบบไม่นับสต๊อก แล้วเคาะราคาเอาตอนขายทุกครั้ง — ครอบเคสนี้ได้โดยไม่ต้องมี 2 ระบบให้พนักงานจำ
💡 ของที่ขายบ่อยควรตั้งเป็นสินค้าจริงแล้วเปิดนับสต๊อก จะได้รู้ว่าเหลือกี่ชิ้น รู้กำไรต่อชิ้น และรู้ว่าต้องสั่งเพิ่มเมื่อไร
ปัญหาที่แก้: เดิม 1 บิลบันทึกวิธีชำระได้แค่วิธีเดียว พอลูกค้าใช้สิทธิ์โครงการรัฐ (เช่น ไทยช่วยไทยพลัส 60/40) ซึ่งรัฐช่วยจ่ายได้สูงสุด 200 บาท/คน/วัน บิลมือถือ 13,900 บาทจึงรับผ่านเป๋าตังได้แค่ ฿333 ที่เหลือลูกค้าจ่ายเงินสด — บิลเดียว 2 ช่องทาง ซึ่งระบบเดิมเก็บไม่ได้
รัฐโอนเงินส่วนของรัฐ เข้าบัญชีร้านครบ ร้านได้เงินเต็มราคา ถ้าบันทึกเป็นส่วนลด:
| บันทึกเป็นส่วนลด (ผิด) | บันทึกเป็นช่องทาง (ถูก) | |
|---|---|---|
| ยอดขายในระบบ | ฿13,567 ❌ | ฿13,900 ✓ |
| เงินที่ร้านได้จริง | ฿13,900 | ฿13,900 |
| VAT ขาย | ต่ำกว่าจริง — ยื่น ภ.พ.30 ขาด | ถูกต้อง |
💡 ใส่ได้สูงสุด 6 ช่องทาง ต่อบิล · บิลที่จ่ายทางเดียวไม่ต้องเข้าโหมดนี้ ใช้ปุ่ม 4 ปุ่มเดิมได้เหมือนเดิมทุกอย่าง
เงินที่รับผ่านแอปโครงการรัฐ ไม่ได้อยู่ในลิ้นชัก — เข้าบัญชี กรุงไทยของร้านวันถัดไป แยก 2 ก้อน
| ก้อน | เข้าเมื่อไหร่ |
|---|---|
| ส่วนที่ลูกค้าจ่าย | 02:00 น. ของวันถัดไป |
| ส่วนที่รัฐช่วยจ่าย | 17:30 น. ของวันถัดไป |
ระบบจึงแยกยอดนี้ออกจาก "เงินโอน" ทุกที่ ไม่ยุบรวมกัน เพื่อให้กระทบยอดกับสมุดบัญชีได้
| หน้า | แสดงอะไร |
|---|---|
ปิดกะ (/shift) | บรรทัด "โครงการรัฐ (เป๋าตัง)" ในกลุ่ม ยอดอื่น (ไม่นับในลิ้นชัก) |
ยอดรับเงินวันนี้ (/daily-takings) | การ์ดแยกช่องทาง — ไม่รวมในช่อง "เงินที่ควรมีในลิ้นชัก" |
| ประวัติการขาย | กรองด้วยวิธีชำระ "โครงการรัฐ" ได้ — เจอบิลแม้ช่องทางนี้จะเป็นก้อนเล็กของบิล |
| ใบเสร็จ | บรรทัดแยกทุกช่องทาง + วงเล็บบอก (รัฐช่วย ฿200 · ลูกค้า ฿133) |
⚠️ เงินโครงการรัฐไม่ถูกนับใน "เงินที่ควรมีในลิ้นชัก" โดยตั้งใจ — ถ้านับเข้าไปจะปิดกะแล้วเงินขาดทุกกะ
ตอนคืนเงินจะมีตัวเลือกวิธีคืน "ยกเลิกรายการในถุงเงิน" เพิ่มมา — เลือกอันนี้เมื่อยกเลิกรายการในแอป (เงินไม่ได้ออกจากลิ้นชัก) อย่าเลือกเงินสด ถ้าไม่ได้ควักเงินสดจริง ไม่งั้นปิดกะจะเงินเกิน
📍 หน้า: /warranty
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: บันทึกและติดตามประกันสินค้าที่ขายออกไป (มือถือและอุปกรณ์เสริม)
ขั้นตอนเพิ่มประกัน:
มือถือ หรือ อุปกรณ์เสริมสถานะประกัน:
| สถานะ | สี | ความหมาย |
|---|---|---|
| ACTIVE | เขียว | ยังอยู่ในระยะประกัน |
| EXPIRED | แดง | หมดอายุแล้ว |
| CLAIMED | ส้ม | มีการเคลมแล้ว |
| VOID | เทา | ยกเลิกประกัน |
Expiring Warranties Widget:
📍 หน้า: /customers
👤 สิทธิ์: OWNER, ADMIN, MANAGER, CASHIER, SALES, SALESTECH
วัตถุประสงค์: จัดการฐานข้อมูลลูกค้า ค้นหา เพิ่ม แก้ไข และดูประวัติ
ขั้นตอนเพิ่มลูกค้าใหม่:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ชื่อ | ชื่อ-นามสกุล | ✅ |
| เบอร์โทร | หมายเลขโทรศัพท์ | ✅ |
| อีเมล | อีเมลลูกค้า | ❌ |
| ที่อยู่ | ที่อยู่สำหรับส่งของ | ❌ |
| LINE ID | สำหรับติดต่อ | ❌ |
| วันเกิด | สำหรับโปรโมชั่นวันเกิด | ❌ |
| หมายเหตุ | ข้อมูลเพิ่มเติม | ❌ |
⭐⭐ ระบบเตือนเมื่อเบอร์โทรซ้ำกับลูกค้าเดิม (4 ก.ย. 2569)
เดิมถ้าจำลูกค้าไม่ได้แล้วกดเพิ่มใหม่ ระบบจะสร้างซ้ำเงียบ ๆ ⇒ ยอดซื้อสะสมแตกเป็น 2 ก้อน ประวัติแยกกัน
(เกิดขึ้นจริง: เบอร์เดียวกันมีทั้ง คุณโล ยอด ฿800 และ คุณโร ยอด ฿1,000 — คนเดียวกัน พิมพ์ชื่อพลาด)
ตอนนี้เมื่อกดบันทึกแล้วเบอร์ตรงกับลูกค้าที่มีอยู่ จะมีหน้าต่างขึ้นเตือนพร้อมรายชื่อคนที่ซ้ำ ให้เลือก 2 ทาง:
| ปุ่ม | ใช้เมื่อ |
|---|---|
| ใช้ลูกค้าคนนี้ | เป็นคนเดิม — ระบบผูกงาน/บิลเข้ากับลูกค้าเดิมให้ ยอดสะสมไม่แตก |
| สร้างเป็นลูกค้าใหม่ | คนละคนจริง ๆ (เช่น พ่อแม่ลูกใช้เบอร์เดียวกัน · ใช้เบอร์ร้านให้ลูกค้าที่ไม่มีมือถือ) |
· เป็นการเตือน ไม่ใช่การห้าม — ยืนยันแล้วสร้างได้เสมอ
· ระบบเทียบเบอร์แบบตัดขีดและเว้นวรรคออก ⇒ 081-234-5678 กับ 0812345678 ถือว่าเบอร์เดียวกัน
· เตือนเฉพาะภายในร้านเดียวกัน และไม่นับ "ลูกค้าทั่วไป" ที่ระบบสร้างให้
· ใช้ได้ทุกหน้าที่เพิ่มลูกค้าได้ (รายชื่อลูกค้า · รับเครื่องซ่อม · งานซ่อม · ขายหน้าร้าน · รับซื้อ · ใบแจ้งหนี้)
· การแก้ไขลูกค้าเดิมแล้วเปลี่ยนเบอร์ไปชนคนอื่น ก็เตือนเหมือนกัน — แต่ถ้าไม่ได้แก้เบอร์จะไม่เตือน (ลูกค้าคู่ที่ซ้ำอยู่แล้วจึงยังแก้ชื่อได้ตามปกติ)
⭐ รายชื่อลูกค้าแสดง "ทั้งร้าน" ไม่แยกตามสาขา (21 ส.ค. 2569)
หน้านี้แสดงลูกค้า ทุกคนของร้าน ไม่ว่าจะถูกบันทึกไว้ที่สาขาไหน และไม่เปลี่ยนตามสาขา ที่เลือกอยู่บนหัวจอ — เพราะลูกค้าคนหนึ่งมีสิทธิ์ไปใช้บริการสาขาไหนก็ได้
เดิมหน้านี้กรองตามสาขา ทำให้ลูกค้าที่ถูกบันทึกไว้ที่สาขาอื่นหายไปจากรายการ ทั้งที่เขามาใช้บริการที่สาขานี้ประจำ (ร้านหนึ่งเห็น 214 คน จากที่มีจริง 328 คน) และถ้าเลือก "ทุกสาขา" หน้าจะว่างเปล่า — แก้ทั้งสองอย่างแล้ว
การเลือกสาขาบนหัวจอยังมีผลกับหน้าอื่นตามเดิม และลูกค้าที่เพิ่มใหม่ยังถูกบันทึกว่า อยู่สาขาไหนเหมือนเดิม เปลี่ยนเฉพาะ "รายการที่แสดง" เท่านั้น
ฟีเจอร์ค้นหาลูกค้า:
ประวัติลูกค้า:
📍 หน้า: /attendance
👤 สิทธิ์: OWNER, ADMIN, MANAGER
วัตถุประสงค์: ดูรายการการลงเวลาของพนักงาน กรอง ค้นหา และแก้ไข
ฟีเจอร์:
⚠️ แก้แล้ว 4 ส.ค. 2569 — วันที่ในตารางเคยถอยไป 1 วัน เดิมพนักงานลงเวลาเข้างานตอนเช้า แต่คอลัมน์ "วันที่" แสดงเป็นเมื่อวาน ทุกแถวทุกคน (ส่วนคอลัมน์ "เวลาเข้างาน" ถูกต้องมาตลอด) เกิดจากระบบเก็บวันที่ผิดตั้งแต่ตอนบันทึก ไม่ใช่แค่แสดงผลผิด จึงกระทบทั้งตัวกรองวันที่ · รายงานรายเดือน · ใบสรุปการมาทำงานที่พิมพ์ให้เซ็น
ข้อมูลเก่าถูกซ่อมย้อนหลังให้แล้ว โดยยึด "เวลาเข้างาน" ที่บันทึกไว้ถูกต้องเป็นหลัก ถ้าเห็นวันที่ไหนยังดูไม่ถูก ให้แจ้งทีมงานพร้อมชื่อพนักงานและช่วงวัน
การลงเวลาผ่านระบบ (Admin):
ฟิลด์การลงเวลา:
| ฟิลด์ | คำอธิบาย |
|---|---|
| พนักงาน | ชื่อ-นามสกุล |
| เวลาเข้างาน | Check-in Time |
| เวลาออกงาน | Check-out Time |
| ชั่วโมงทำงาน | คำนวณอัตโนมัติ |
| สาย | isLate flag |
| ออกก่อนเวลา | isEarlyLeave flag พร้อม leaveReason |
| หมายเหตุ | Remark |
📍 หน้า: /settings → หัวข้อ "เวลาทำงานมาตรฐาน"
👤 สิทธิ์: OWNER, ADMIN
เดิมระบบตัดสิน "สาย" ที่ 09:00 และ "ออกก่อนเวลา" ที่ 17:00 ตายตัว แก้ไม่ได้เลย ร้านที่เปิด 10 โมงจึงเห็นพนักงานขึ้นว่า "สาย" ทุกคนทุกวัน — ตอนนี้ตั้งเองได้แล้ว
10:00 / 19:30)| ตั้งแบบไหน | ใช้กับใคร |
|---|---|
| ค่ากลางทั้งร้าน | ทุกสาขาที่ไม่ได้ตั้งค่าของตัวเอง |
| เฉพาะสาขา | สาขานั้นสาขาเดียว — ทับค่ากลางเสมอ |
| ไม่เคยตั้งเลย | ใช้ค่าเริ่มต้น 09:00 – 17:00 (เหมือนพฤติกรรมเดิมทุกประการ) |
หน้าจอจะบอกให้เห็นว่าค่าที่ใช้อยู่มาจากไหน และเตือนถ้าค่ากลางของร้านกำลังถูกค่าของสาขาบังอยู่ มีปุ่มล้างกลับไปใช้ค่าเริ่มต้นได้
ℹ️ เปลี่ยนเวลาแล้ว มีผลกับการลงเวลาครั้งถัดไป รายการที่บันทึกไปแล้วไม่ถูกคำนวณใหม่
📍 หน้า: /attendance
👤 สิทธิ์: OWNER, ADMIN เท่านั้น (ผู้จัดการสาขาไม่เห็นปุ่มนี้)
เดิมคู่มือเขียนว่าแก้ได้ แต่ไม่มีปุ่มบนหน้าจอจริง ๆ — ตอนนี้มีแล้ว
สิ่งที่ระบบกันไว้ให้
| กรณี | ระบบทำอะไร |
|---|---|
| กรอกเวลาออก ก่อน เวลาเข้า | ปฏิเสธพร้อมบอกเหตุผล (เดิมรับไว้แล้วได้ชั่วโมงทำงานติดลบไหลเข้าเงินเดือน) |
| กรอกเวลาที่อ่านไม่ออก | ปฏิเสธพร้อมข้อความภาษาไทย (เดิมขึ้นข้อผิดพลาดของระบบ) |
| แก้เวลาออกงาน | คำนวณธง "ออกก่อนเวลา" ใหม่ให้ตามเวลาออกงานของสาขา (เดิมธงค้างค่าเก่า ทำให้รายงานนับผิดเงียบ ๆ) |
| ล้างเวลาออกงาน | ปล่อยว่างได้ สำหรับกรณีลืมลงเวลาออก |
⚠️ ทุกการแก้และการลบถูกบันทึกไว้ว่าใครทำ เมื่อไร ค่าเดิมคืออะไร ดูได้ที่ Audit Log (§14.5) เพราะเวลาเข้างานผูกกับการคำนวณเงินเดือนโดยตรง
📍 หน้า: /kiosk/login → /kiosk
👤 สิทธิ์: ระบบแยกสำหรับพนักงาน (ไม่ต้อง Login หลัก)
📦 แพ็คเกจ: Professional หรือ Enterprise (ฟีเจอร์นี้ถูกล็อคในแพ็คเกจ Starter)
วัตถุประสงค์: หน้าจอ Kiosk สำหรับพนักงานสแกน QR Code เพื่อลงเวลาเข้า-ออก โดยไม่ต้องล็อกอินระบบหลัก — เหมาะกับ tablet/iPad วางหน้าร้าน
การเปิดใช้งาน Kiosk:
/attendance) ในฐานะ Admin/Managerhttps://shop.com/kiosk/login)⚠️ ถ้าแพ็คเกจของคุณยังไม่รวม Kiosk panel จะแสดง badge "PRO+" + ปุ่ม "อัพเกรด" → คลิกไปหน้า Billing
ขั้นตอนลงเวลาพนักงาน:
/kiosk บนแท็บเล็ตหรือคอมพิวเตอร์หน้าร้านQR Code พนักงาน:
💡 เคล็ดลับ: ตั้งแท็บเล็ตไว้ที่ทางเข้าออกร้าน ให้พนักงานสแกนเองทุกวัน ประหยัดเวลาและแม่นยำกว่าการลงเวลาแบบกระดาษ
📍 หน้า: /payroll
👤 สิทธิ์: OWNER, ADMIN เท่านั้น
📦 แพ็คเกจ: ENTERPRISE (PAYROLL feature)
หมายเหตุ (อัปเดต 1 ส.ค. 2569): เดิมข้อมูลเงินเดือนฝั่ง "อ่าน" เปิดให้พนักงานทุกระดับเรียกผ่าน API ได้ (ตัวเมนูซ่อนไว้ แต่ API ไม่ได้กัน) ตอนนี้ปิดให้เหลือเฉพาะ เจ้าของร้าน + แอดมิน ตรงกับฝั่งบันทึกข้อมูลแล้ว หากผู้จัดการสาขา (MANAGER) เคยเปิดหน้านี้ได้ จะเข้าไม่ได้อีกต่อไป
วัตถุประสงค์: คำนวณเงินเดือนพนักงาน เพิ่ม/หักรายการ อนุมัติ บันทึกการจ่าย และพิมพ์สลิป
ตั้งเงินเดือนพื้นฐานของพนักงาน ที่ /users → แก้ไข → ช่อง "เงินเดือนพื้นฐาน" → บันทึก. ระบบจะสร้าง EmployeeSalary record อัตโนมัติเมื่อ baseSalary > 0
(แนะนำ) ตั้งค่าประเภทรายการเงินเดือน ที่ /masters/deduction-types:
Payroll สำหรับพนักงานที่ยังไม่มีรอบนี้ตาราง 4 columns: เงินเดือนพื้นฐาน · รายได้เพิ่ม · รายการหัก · รวมสุทธิ — ค่าจริงดึงจาก totalAdditions / totalDeductions
/masters/deduction-types (auto-detect รายได้เพิ่ม/หัก จาก isDeduction ของประเภท)totalAdditions/totalDeductions/netSalary ทันที| สถานะ | สี | ความหมาย | ทำได้ | พิมพ์สลิป? |
|---|---|---|---|---|
| PENDING | เหลือง | รอดำเนินการ — ตัวเลขแก้ได้ | เพิ่ม/ลบ adjustment, อนุมัติ | ❌ disabled (กันสับสน) |
| APPROVED | น้ำเงิน | อนุมัติแล้ว รอจ่าย — locked | บันทึกการจ่าย, พิมพ์สลิป preview | ✅ |
| PAID | เขียว | จ่ายแล้ว — final | พิมพ์สลิป official (ใช้ขอ visa/loan) | ✅ |
ขั้นตอน:
⚠️ กฎทั่วไป: PENDING ปุ่มพิมพ์ disabled — เพราะตัวเลขยังเปลี่ยนได้ พิมพ์ตอนนี้พนักงานเซ็นรับ แล้วแก้ ทำให้สลิปไม่ตรงกับเงินที่จ่ายจริง
📍 เส้นทาง: เมนูซ้าย → "พนักงาน & การเงิน" → ค่าใช้จ่าย (/expenses)
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: บันทึกค่าใช้จ่ายดำเนินงาน (ค่าเช่าร้าน, ค่าน้ำ-ไฟ, ค่าน้ำมัน, marketing, ฯลฯ) ที่ไม่ใช่ค่าซื้อสินค้าหรือเงินเดือน — เพื่อให้:
ระบบ auto-seed 9 หมวดเมื่อสร้าง tenant ใหม่:
| Code | ชื่อ | ตัวอย่าง |
|---|---|---|
| RENT | ค่าเช่าร้าน/สำนักงาน | ค่าเช่าตึก, ค่าเช่าโกดัง |
| UTILITY | ค่าน้ำ-ค่าไฟ-ค่าน้ำประปา | บิลค่าไฟทุกเดือน |
| INTERNET | ค่าอินเทอร์เน็ต/โทรศัพท์ | True/3BB, ค่ามือถือพนักงาน |
| FUEL | ค่าน้ำมันเชื้อเพลิง | ปั๊ม PTT, BCP, ส่งของ |
| MARKETING | ค่าโฆษณา/การตลาด | Facebook Ads, ป้ายไวนิล |
| SUPPLIES | ค่าวัสดุสิ้นเปลือง/ออฟฟิศ | กระดาษ, หมึก, ถุงพลาสติก |
| OUTSOURCE | ค่าจ้างซ่อม/Outsource | ส่งศูนย์ซ่อม mainboard |
| PROFESSIONAL | ค่าทำบัญชี/ที่ปรึกษา | สำนักงานบัญชี, ทนาย |
| OTHER | อื่นๆ | กรณีไม่เข้าหมวดใด |
จัดการเพิ่ม/แก้ไข/ลบหมวดได้ที่ /masters/expense-categories
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| วันที่ | วันที่จ่ายเงินจริง (หรือวันที่ในใบกำกับภาษี) | ✅ |
| หมวด | เลือกหมวด (RENT/UTILITY/...) | ✅ |
| ผู้ขาย | ชื่อร้าน/บริษัท เช่น "การไฟฟ้านครหลวง" | ❌ |
| จำนวนเงิน (ก่อน VAT) | ราคาก่อนภาษีมูลค่าเพิ่ม | ✅ |
| ภาษีซื้อ (VAT) | ใส่เฉพาะใบกำกับเต็มรูป — ใช้ใน ภ.พ.30 | ❌ |
| เลขที่ใบกำกับ | สำหรับใบกำกับเต็มรูป | ❌ |
| วิธีชำระ | เงินสด / โอน / PromptPay / บัตร | ❌ |
| รายละเอียด | บันทึกเพิ่มเติม | ❌ |
| ใบเสร็จ/สลิป | ถ่ายรูปแนบ (jpg/png) | ❌ |
| หัก ณ ที่จ่าย | toggle เปิด-ปิด | ❌ |
amount × rate ÷ 100)/expenses — จำนวนรายการ / รวมก่อน VAT / ภาษีซื้อ / WHT รวม💡 เคล็ดลับ: บันทึกทันทีหลังจ่ายเงินทุกครั้ง — ไม่ต้องรอสิ้นเดือน. แนบรูปใบเสร็จด้วยจะใช้เป็น audit trail ตอน RD มาตรวจ
⚠️ คำเตือน: ค่าใช้จ่ายที่หมวด isDeductible=false (ลดหย่อนไม่ได้) จะ ไม่ ถูกรวมใน ACTUAL deduction — ใช้สำหรับค่าใช้จ่ายส่วนตัว/นอกธุรกิจที่อยากบันทึกแต่ไม่อยากให้กระทบภาษี
📍 เส้นทาง: เมนูซ้าย → "ขาย & ลูกค้า" → กะการขาย (/shift)
👤 สิทธิ์: เจ้าของร้าน · ผู้ดูแลระบบ · ผู้จัดการ · แคชเชียร์ · พนักงานขาย · ช่างขาย — เปิด-ปิดกะของตัวเอง
(เจ้าของร้าน / ผู้ดูแลระบบ / ผู้จัดการ ดูประวัติกะของพนักงานคนอื่นได้ด้วย)
🔒 ช่างซ่อม (ที่มีบทบาทช่างอย่างเดียว) เข้าหน้านี้ไม่ได้ — ปรับปรุง 19 ส.ค. 2569
เดิมเมนูไม่ขึ้นให้เห็นก็จริง แต่ถ้าพิมพ์ที่อยู่หน้าเว็บเข้ามาตรง ๆ ยังเปิดได้ และเปิดกะได้จริง ตอนนี้จะเจอหน้า "ไม่มีสิทธิ์เข้าถึง" พร้อมปุ่มพาไปหน้างานซ่อม
⚠️ ครอบทั้ง การเปิด-ปิดกะ และ การบันทึกเงินเข้า-ออกลิ้นชัก (§10B.5) 💡 พนักงานที่เป็น ช่างขาย (ถือทั้งบทบาทขายและบทบาทช่างในคนเดียว) ยังเข้าได้ตามปกติ ถ้าช่างคนไหนจำเป็นต้องเปิดกะ ให้เจ้าของร้านเพิ่มบทบาท พนักงานขาย ให้เขาที่หน้า ผู้ใช้งาน (§14.2)
วัตถุประสงค์: ทุกร้าน POS ต้องนับเงินสดในลิ้นชักตอนเปิด-ปิดงาน เทียบกับยอดที่ระบบบันทึก เพื่อ:
ตามมาตรฐาน POS สากล (Microsoft Dynamics 365 Commerce, Shopify POS, Lightspeed) — "POS requires that users have an active and open shift to perform any operations that produce a financial transaction"
กฎ default ใน MobileHub:
| บทบาท | ต้องเปิดกะก่อนขาย? | เหตุผล |
|---|---|---|
| แคชเชียร์ | ✅ ใช่ | คนรับเงินหลัก — ต้องรับผิดชอบเงินในลิ้นชัก + ตรวจเงินขาด/เกิน |
| พนักงานขาย | ✅ ใช่ | ขายแล้วรับเงินเองด้วย — ความรับผิดชอบเดียวกัน |
| ผู้จัดการ | ❌ ไม่ | ผู้รับผิดชอบสาขา — ข้ามได้ |
| ผู้ดูแลระบบ | ❌ ไม่ | ผู้ดูแลระบบ — ข้ามได้ |
| เจ้าของร้าน | ❌ ไม่ | เจ้าของร้าน — ข้ามได้ (ร้านเล็กมักทำเองคนเดียว) |
| ช่างขาย | ❌ ไม่ | ถือบทบาทช่างซ่อมอยู่ด้วย ซึ่งอยู่นอกรายชื่อที่บังคับ ระบบจึงยกเว้นให้ — แต่ เข้าหน้ากะและเปิดกะได้ ถ้าร้านอยากให้เปิด |
| ช่างซ่อม | — | เข้าหน้ากะการขายไม่ได้เลย (ปรับปรุง 19 ส.ค. 2569) จึงไม่มีกะให้เปิด — ดูกล่องบนสุดของ §10B |
💡 คนที่ถือหลายบทบาทพร้อมกัน ให้ดูที่บทบาท "ที่ไม่ถูกบังคับ" เป็นหลัก ถ้าพนักงานคนหนึ่งมีบทบาทใดก็ตามที่อยู่นอกรายชื่อที่ร้านตั้งให้บังคับ ระบบจะยกเว้นให้ทั้งคน เช่น คนที่เป็นทั้ง แคชเชียร์ + ผู้จัดการ จะขายได้เลยโดยไม่ต้องเปิดกะ (เจตนาคือ ร้านเล็กที่หัวหน้ามาช่วยหน้าเคาน์เตอร์เป็นครั้งคราวจะได้ไม่ติดขัด) ถ้าอยากบังคับคนกลุ่มนี้จริง ๆ ต้องเพิ่มบทบาทที่เขาถืออยู่เข้าไปในรายชื่อบังคับให้ครบทุกอัน
ปรับแก้นโยบายได้ที่ /settings → "นโยบายกะการขาย (POS Shift)" — MultiSelect ให้เลือกบทบาทใดบ้างที่ต้องบังคับ. เคลียร์ทั้งหมด = ปิดการบังคับ (ทุก role ขายได้ตรง).
สิ่งที่เกิดถ้าบังคับ + ยังไม่เปิดกะ:
/sales แสดง banner สีส้ม + ปุ่ม "ไปเปิดกะการขาย" → กดเข้า /shift/sales ตรง API → backend ตอบ 403 SHIFT_REQUIRED พร้อม message ภาษาไทย(1) เปิดกะ — ตอนเริ่มงาน
/shift → กดปุ่ม เปิดกะ(2) ระหว่างกะ — POS ทำงานปกติ
/sales ตามปกติ — ไม่ต้องคิดเรื่อง shift(3) ปิดกะ — ตอนเลิกงาน
ไป /shift → กดปุ่ม ปิดกะ ที่ card "กะที่เปิดอยู่"
ระบบโชว์ ยอดที่ควรจะมี (Expected) — breakdown:
เงินทอนเริ่มต้น ฿ 2,000.00
+ เงินสดที่ขาย (15 ออเดอร์) ฿ 18,500.00
+ ค่าซ่อมที่รับสด (2 งาน) ฿ 1,800.00 ← ใหม่
− เงินสดที่ refund ฿ 500.00
─────────────────────────
= ที่ควรจะมี ฿ 21,800.00
พร้อมยอดอื่น (โอน/PromptPay/บัตร) ที่ ไม่ต้องนับในลิ้นชัก
⭐ ใหม่ ส.ค. 2569 — ค่าซ่อมที่รับเองที่เคาน์เตอร์เข้ายอดกะแล้ว เดิมเงินค่าซ่อมอยู่ในลิ้นชักจริงแต่ไม่เคยถูกนับ ร้านที่เก็บเงินซ่อมเองจึงปิดกะแล้วขึ้น "เงินเกิน" ทุกวันที่มีงานซ่อม ตอนนี้งานที่กดรับเงินระหว่างกะเปิดอยู่จะถูกผูกเข้ากะอัตโนมัติ (ดู §5.9) และแยกช่องจากยอดขาย เพื่อให้ประวัติเก่ากับใหม่ยังเทียบกันได้ ค่าซ่อมที่รับเป็น โอน/บัตร ไปอยู่กลุ่ม "ยอดอื่น" ไม่บวกเข้าเงินสด งานที่ไม่ระบุวิธีรับเงิน (ข้อมูลก่อน ส.ค. 2569) ไม่ถูกนับเข้าช่องไหนเลย — ระบบไม่เดา
นับเงินสดในลิ้นชักจริง → กรอกในช่อง "เงินสดที่นับจริง"
ระบบคำนวณ variance อัตโนมัติ:
กรอกเหตุผล (ถ้ามี variance) → ยืนยันปิดกะ
ระบบบันทึก expected/actual/variance + snapshot ของ totalCashSales/totalTransferSales/totalCardSales/totalCashRefunds + saleCount และค่าซ่อมแยกอีก 3 ช่อง (สด/โอน/บัตร) + จำนวนงานซ่อมในกะ — เก็บ snapshot ไว้เพื่อให้กะที่ปิดไปแล้วอธิบายที่มาของ "เงินที่ควรมี" ได้ครบทุกบาท
| กะ (Shift) | Z Report (end-of-day) | |
|---|---|---|
| ระดับ | per cashier (ของพนักงาน 1 คน) | ทั้งร้าน (รวมทุกคน) |
| เปิดต่อวัน | หลายคนเปิดคนละเวลาได้ | 1 ครั้งสิ้นวัน |
| ที่อยู่ | /shift | /sales-history?type=z-report |
| ทำงานคู่กัน | ใช่ — Z Report รวมยอดของทุก shift ในวัน |
ระบบเตือนเมื่อ variance > ฿1 แต่ไม่ block — ยังปิดกะได้ถ้ากรอกเหตุผล. เหตุผลทั่วไป:
ปัญหาที่แก้: ระหว่างวันร้านหยิบเงินสดออกจากลิ้นชักเป็นเรื่องปกติ — จ่ายค่าส่งของ ซื้อน้ำ/ของใช้หน้าร้าน นำเงินไปฝากธนาคาร — และเติมเงินเข้าเมื่อเงินทอนไม่พอ
ถ้าไม่บันทึก ตอนปิดกะระบบจะบอกว่า "เงินขาด" เท่ายอดที่หยิบออกไปทุกครั้ง แคชเชียร์ต้องพิมพ์เหตุผลอธิบายทุกกะ จนตัวเลข variance ใช้จับเงินหายจริงไม่ได้อีกต่อไป
| ทาง | อยู่ตรงไหน | เหมาะกับ |
|---|---|---|
| 1. ตอนหยิบเงินเลย | ปุ่ม "เงินเข้า/ออก" บนการ์ดกะที่เปิดอยู่ (ข้างปุ่มปิดกะ) | บันทึกทันทีที่จ่าย — แนะนำที่สุด |
| 2. ตอนปิดกะแล้วเลขไม่ตรง | ในหน้าปิดกะ เมื่อยอดขาด จะมีกล่องถามว่า "หยิบเงินออกไปจ่ายอะไรหรือเปล่า?" พร้อมปุ่มบันทึก | นึกขึ้นได้ตอนปิดกะ — บันทึกแล้วเด้งกลับมาพร้อมยอดใหม่ |
ใส่ได้หลายรายการพร้อมกัน — ปลายวันมีสลิปค้างหลายใบก็ใส่รวดเดียว ไม่ต้องบันทึกทีละใบแล้วเปิดหน้าต่างใหม่
ถ้ามีแถวใดกรอกไม่ครบ ระบบจะไม่บันทึกอะไรเลยทั้งชุด พร้อมบอกว่าแถวที่เท่าไหร่ผิด — ที่ทำแบบนี้เพราะถ้าบันทึกแถวที่ถูกไปก่อนแล้วค่อยแจ้ง error ผู้ใช้จะกดใหม่ทั้งชุด แล้วได้รายการซ้ำ เงินในรายงานจะเกินจริง
เปิดที่ ตั้งค่า → สวิตช์ "พิมพ์สลิปเงินเข้า/ออกอัตโนมัติ" (แยกรายสาขา · ค่าตั้งต้นคือปิด) เมื่อเปิดแล้ว กดบันทึกเงินเข้า/ออก → ระบบเปิดหน้าต่างพิมพ์ให้ทันที → กดพิมพ์ → ได้สลิป และลิ้นชักเปิด
ทำไมต้องพิมพ์ถึงจะเปิดลิ้นชักได้ — ลิ้นชักเก็บเงินไม่ได้ต่อกับคอมพิวเตอร์ มันเสียบอยู่กับ เครื่องพิมพ์สลิป (ช่อง RJ11 ท้ายเครื่อง) และเครื่องพิมพ์เป็นคนจ่ายไฟไปเปิดสลัก โปรแกรมบนเว็บ จึงสั่งลิ้นชักตรง ๆ ไม่ได้ ต้องสั่งผ่านงานพิมพ์เท่านั้น
ต้องตั้งที่เครื่องพิมพ์ด้วย 1 ครั้ง — เข้า Windows → Printer properties ของเครื่องพิมพ์สลิป → เปิดตัวเลือก Cash drawer / Open drawer · แก้จากโปรแกรมไม่ได้ และถ้าไดรเวอร์ของเครื่องนั้น ไม่มีตัวเลือกนี้ จะใช้ไม่ได้
⚠️ เปิดสวิตช์ที่ไดรเวอร์แล้ว ลิ้นชักจะเด้งทุกใบที่พิมพ์ออกเครื่องพิมพ์สลิปตัวนั้น — รวม ใบเสร็จขายที่ POS (ปกติก็ต้องการอยู่แล้ว) และ การพิมพ์ใบเสร็จเก่าซ้ำ (มักไม่ต้องการ) แยกกรณีไม่ได้เพราะสวิตช์อยู่ที่เครื่องพิมพ์ ไม่ใช่ที่โปรแกรม — เครื่องพิมพ์ไม่รู้ว่าใบที่ได้รับ เป็นใบใหม่หรือใบพิมพ์ซ้ำ · เอกสาร A4 (ใบรับซ่อม/ใบประกัน) ไปเครื่องพิมพ์คนละตัว ไม่เด้ง · ถ้ารับไม่ได้ ให้ปิดสวิตช์ที่ไดรเวอร์แล้วเปิดลิ้นชักด้วยกุญแจเหมือนเดิม — สลิปยังพิมพ์เป็นหลักฐานได้ตามปกติ
เรื่องที่ควรรู้เกี่ยวกับสลิป
เปิด ประวัติกะ → คลิกกะที่ต้องการ → นอกจากยอดรวมในส่วน "สรุปยอด" แล้ว จะมีส่วน "รายการเงินเข้า/ออกลิ้นชัก" แจกแจงทีละรายการ พร้อม เหตุผล · เวลา · ชื่อคนที่บันทึก และป้ายบอกว่ารายการไหนสร้างใบค่าใช้จ่ายไว้แล้ว — ใช้ตรวจย้อนหลังหรือให้ผู้สอบบัญชีดูได้
ยอดที่ควรมีในลิ้นชัก
= เงินทอนเริ่มต้น + ขายเงินสด + ค่าซ่อมที่รับสด − คืนเงินสด + เงินเข้า − เงินออก
ตัวอย่างจริง: เงินทอนเริ่ม ฿1,330 + ขายสด ฿1,090 − ค่าส่ง ฿48 = ควรมี ฿2,372
1. อย่าพิมพ์ "จ่ายค่าส่ง 48" ลงช่องเหตุผลของ variance ถ้าทำแบบนั้น เงินก้อนนั้นจะถูกบันทึกเป็น "เงินขาดที่อธิบายแล้ว" ไม่ใช่ "รายจ่ายที่ถูกต้อง" → ไม่เข้าค่าใช้จ่าย ไม่เข้ารายงานภาษี และกะนั้นจะมี variance ติดลบค้างอยู่ถาวร ให้ใช้ปุ่ม "บันทึกเงินออก" แทนเสมอ
2. เลือกหมวดค่าใช้จ่ายเฉพาะเมื่อเป็น "รายจ่าย" จริง นำฝากธนาคาร หรือ ส่งเงินทอนไปสาขาอื่น คือการย้ายเงิน ไม่ใช่รายจ่าย — ถ้าบันทึกเป็นค่าใช้จ่ายด้วย กำไรจะต่ำกว่าความจริงและฐานภาษีผิด · เว้นช่องหมวดว่างไว้ (ส่วนเงินเข้า เลือกหมวดไม่ได้เลย เพราะการเติมเงินทอนไม่ใช่รายจ่ายแน่นอน)
3. กะที่ปิดแล้วเพิ่ม/ลบรายการย้อนหลังไม่ได้ ตอนปิดกะระบบบันทึกยอดสรุปไว้เป็นหลักฐาน ถ้าแก้ย้อนหลังได้ ตัวเลขที่บันทึกไว้จะอธิบายตัวเองไม่ได้อีก — ถ้าลืมบันทึกจริง ๆ ให้ใส่ไว้ในหมายเหตุปิดกะแล้วแจ้งผู้จัดการ
กดไอคอนถังขยะที่แถวนั้น (ทำได้เฉพาะตอนกะยังเปิดอยู่) — ยอดคำนวณใหม่ทันที และถ้ารายการนั้นสร้างใบค่าใช้จ่ายไว้ ใบนั้นจะถูกลบตามไปด้วย ไม่ค้างเป็นต้นทุนที่ไม่มีที่มา
📍 หน้า: /reports
👤 สิทธิ์: OWNER, ADMIN, MANAGER
วัตถุประสงค์: ดูรายงานสรุปในรูปแบบต่างๆ เลือกช่วงวันที่ Export Excel ได้
ประเภทรายงาน:
| รายงาน | คำอธิบาย |
|---|---|
| 📊 รายงานยอดขาย | สรุปยอดขายสินค้า ยอดรวม จำนวนรายการ |
| 🔧 รายงานการซ่อม | สรุปงานซ่อม ค่าซ่อม สถิติตามช่าง |
| 🛒 รายงานการรับซื้อ | สรุปการรับซื้อสินค้า ต้นทุน |
| 📦 รายงานสินค้าคงเหลือ | Stock มือถือและอุปกรณ์เสริมปัจจุบัน — ดูแยกรายสาขาได้แล้ว (ดู §11.0A) |
| 💰 สรุปการเงิน | กำไร-ขาดทุน รายรับ-รายจ่ายรวม |
| 🧾 สรุปภาษี VAT (ภ.พ.30) | ยอด VAT ที่เก็บได้ สำหรับร้านที่จด VAT |
| 🧮 ภาษีเงินได้ (ภ.ง.ด.94/90) | คำนวณภาษีบุคคลธรรมดา + ตารางอัตราก้าวหน้า 8 ขั้น |
กำไรขั้นต้น = รายได้ − ต้นทุน โดยต้นทุนมี 3 ก้อนที่ไม่ทับกัน
| ก้อน | มาจากไหน |
|---|---|
| ต้นทุนมือถือที่ขายไป | ต้นทุนของเครื่องที่ขายออกในช่วงนั้น (เครื่องที่รับซื้อมา ต้นทุนคือราคาที่จ่ายตอนรับซื้อ) |
| ต้นทุนอุปกรณ์เสริมที่ขายไป | ต้นทุนของอุปกรณ์เสริมที่ขายออกในช่วงนั้น |
| ต้นทุนอะไหล่ซ่อม | ช่อง ต้นทุน/ชิ้น ในใบซ่อม (ถ้าไม่ได้กรอก ระบบใช้ราคาขายแทน) |
ℹ️ การ์ด "ต้นทุนการรับซื้อ" แสดงเงินที่จ่ายรับซื้อเครื่องเข้าร้านในช่วงนั้น แต่ไม่ได้ถูกหักในกำไรขั้นต้นทันที — เครื่องที่รับซื้อมายังอยู่ในสต๊อก ต้นทุนจะถูกหักตอนขายเครื่องนั้นออกไป (ถ้าหักทั้ง 2 ตอน ต้นทุนจะถูกนับซ้ำ)
2 หน้านี้ หักต้นทุนอะไหล่ซ่อมคนละวัน — ตัวเลขไม่ได้ผิดทั้งคู่ แค่นับคนละวัน
| หน้า | หักต้นทุนอะไหล่ซ่อมในวันไหน |
|---|---|
| รายงาน → สรุปการเงิน | วันที่ใส่อะไหล่ลงใบซ่อม (รวมงานที่ยังไม่ได้เก็บเงิน) |
| ยอดรับเงินวันนี้ | วันที่ลูกค้าจ่ายเงิน ของงานซ่อมนั้น |
ตัวอย่าง: ใส่จอต้นทุน 320 บาทลงใบซ่อมตอน 18:40 วันที่ 15 แต่ลูกค้ามารับเครื่องและจ่ายเงินเช้าวันที่ 16
⇒ งานที่ใส่อะไหล่กับเก็บเงิน วันเดียวกัน จะถูกหักต้นทุนในวันเดียวกันทั้ง 2 หน้า · หน้าสรุปการเงินมีหมายเหตุนี้กำกับไว้ใต้การ์ดกำไรแล้ว
⚠️ ก่อนหน้านี้กำไรขั้นต้นไม่ได้หักต้นทุนอะไหล่ซ่อม ทำให้ค่าอะไหล่ทั้งก้อนถูกนับเป็นกำไร ตัวเลขจึงสูงกว่าความจริง ตอนนี้แก้แล้ว — ถ้าเทียบกับรายงานเดือนก่อน ๆ ตัวเลขกำไรจะลดลง เพราะของเดิมสูงเกินจริง ไม่ใช่ร้านกำไรน้อยลง
ตัวเลขบน แดชบอร์ด (การ์ด "กำไรขั้นต้นเดือนนี้") ใช้วิธีคิดเดียวกันกับหน้ารายงานแล้ว เดิม 2 ที่นี้คิดคนละแบบจึงไม่เคยตรงกัน
ขั้นตอนดูรายงาน:
📦 Export Excel/PDF เป็นฟีเจอร์ของแพ็คเกจ Professional ขึ้นไป — ในแพ็คเกจ Starter ปุ่มจะ disable แสดงข้อความ "PRO+ เท่านั้น"
💡 เคล็ดลับ: เลือกช่วงวันที่เป็น "เดือนปัจจุบัน" เพื่อดูยอดรวมประจำเดือน
📍 เลือก: /reports → รายงานสินค้าคงเหลือ
สิ่งที่เปลี่ยน
| เดิม | ตอนนี้ | |
|---|---|---|
| เลือกสาขา | เลือกได้ แต่ตัวเลขไม่เปลี่ยน | เลือกแล้วได้เฉพาะเครื่องของสาขานั้นจริง |
| ช่วงวันที่ | มีช่องให้เลือก แต่ไม่มีผลกับรายงานนี้ | เอาออกแล้ว (ดูเหตุผลข้างล่าง) |
| ใบพิมพ์ | ได้ทุกสาขาเสมอ · ไม่บอกว่าเครื่องไหนอยู่สาขาไหน | ตรงกับที่เลือกบนจอ · โหมดทุกสาขามีคอลัมน์ "สาขา" |
| หัวใบพิมพ์ | โหมดทุกสาขาพิมพ์คำว่า "ทุกสาขา" เป็นชื่อร้าน | พิมพ์ชื่อร้านจริง แล้วบอกขอบเขตแยกบรรทัด |
ℹ️ ทำไมเอาช่องวันที่ออก — รายงานนี้ตอบคำถามว่า "ตอนนี้มีของอยู่เท่าไหร่" ซึ่งเป็นสภาพ ณ ปัจจุบัน ไม่ใช่ยอดของช่วงเวลา เดิมมีช่องให้เลือกแต่ระบบไม่ได้เอาไปใช้ จึงเป็นช่องที่กดแล้วไม่มีอะไรเกิดขึ้น — ปล่อยไว้จะทำให้เข้าใจผิดว่าตัวเลขถูกกรองแล้ว ถ้าอยากดูของที่รับเข้ามาในช่วงหนึ่ง ให้ใช้ รายงานการรับซื้อ แทน
⚠️ เครื่องที่ยังไม่ได้ระบุสาขา (ข้อมูลเก่าที่บันทึกไว้ก่อนระบบมีหลายสาขา) จะขึ้นว่า "ไม่ระบุสาขา" — ไม่ใช่ข้อผิดพลาด แต่ถ้าอยากให้ตัวเลขรายสาขาครบ ให้เข้าไปแก้สาขาของเครื่องเหล่านั้นที่หน้า สต๊อก
🔧 เครื่องที่กำลังซ่อมอยู่ เคยขึ้นเป็นตัวอักษรอังกฤษ IN_REPAIR บนตาราง ตอนนี้แสดงเป็น "กำลังซ่อม" แล้ว
🖨️ ใบพิมพ์รายงานนี้ยาวหลายหน้าตามจำนวนเครื่อง ซึ่งถูกต้อง — ถ้ารู้สึกว่าเปลืองกระดาษ ให้กดลิงก์ "พิมพ์แล้วเปลืองกระดาษ?" ใต้ปุ่มพิมพ์
📍 เลือก: /reports → ภาษีเงินได้บุคคลธรรมดา (ภ.ง.ด.94/90) 👤 สำหรับ: ร้านที่ไม่ได้จดเป็นนิติบุคคล (บุคคลธรรมดา) — ทั้งร้านที่จด VAT และไม่จด VAT
วัตถุประสงค์: คำนวณภาษีเงินได้สำหรับเจ้าของกิจการที่เป็น<strong>บุคคลธรรมดา</strong> ภายใต้มาตรา 40(8) (เงินได้จากการพาณิชย์) — ครอบคลุมทั้ง ภ.ง.ด.94 (กลางปี) และ ภ.ง.ด.90 (เต็มปี)
ก่อนใช้งาน — ตั้งค่าที่ /settings → ภาษีเงินได้ (ภ.ง.ด.):
ขั้นตอนดูรายงาน:
ผลลัพธ์ที่แสดง:
📜 กฎ ม.48(2): ผู้มีรายได้จาก ม.40(8) เกิน <strong>1,000,000 บาท/ปี</strong> ต้องเปรียบเทียบ 2 วิธี และเสียภาษีตามวิธีที่<strong>ได้ตัวเลขสูงกว่า</strong>: (a) อัตราก้าวหน้า 8 ขั้น vs (b) 0.5% × รายได้รวม ระบบเปรียบเทียบและเลือกวิธีที่ถูกต้องให้อัตโนมัติ
พิมพ์เอกสาร ภ.ง.ด. (ใหม่):
⚠️ ข้อสำคัญ: เอกสารฉบับนี้เป็น<strong>เอกสารอ้างอิง</strong>เท่านั้น — การยื่นภาษีจริงต้องผ่าน <strong>e-Filing</strong> ของกรมสรรพากรที่ <a href="https://efiling.rd.go.th/">efiling.rd.go.th</a> ตัวเลขในเอกสารคำนวณจากข้อมูลในระบบ MobileHub และต้องตรวจสอบโดยผู้เสียภาษีอีกครั้งก่อนยื่น
กำหนดการยื่นจริง:
ทำไมเหมาะกับร้านมือถือ?
📍 เมนูใหม่บน sidebar: "ภาษี" — section header + 4 sub-items 👤 สิทธิ์: ADMIN, OWNER
วัตถุประสงค์: รวบรวมเมนูที่เกี่ยวกับ<strong>ภาษี</strong>ทั้งหมดไว้ที่เดียว — ตั้งค่า, คำนวณ, พิมพ์เอกสาร เพื่อใช้งานในช่วงเตรียมยื่นภาษี
📊 ภาษี
├── 🏛 ภาพรวม /tax — Dashboard + กำหนดยื่น + Quick stats
├── 🧮 ภ.ง.ด.94/90 (PIT) /tax/pit — คำนวณภาษีเงินได้บุคคลธรรมดา (8-tier progressive + ม.48(2))
├── 🏢 ภ.ง.ด.50/51 (CIT) /tax/cit — คำนวณภาษีเงินได้นิติบุคคล (SME 0/15/20% หรือ Non-SME 20%)
├── ⚖️ ภ.พ.30 (VAT) /tax/vat — สรุปภาษีมูลค่าเพิ่มรายเดือน
├── 💰 ภ.ง.ด.3/53 (WHT) /tax/wht — สรุปหัก ณ ที่จ่ายตามผู้รับ + Export CSV
└── ⚙️ ตั้งค่าภาษี /tax/settings — entityType + วิธีหักค่าใช้จ่าย + ค่าลดหย่อน 4 กลุ่ม
หน้าศูนย์กลางสำหรับงานภาษี แสดง:
หน้าคำนวณภาษีเงินได้บุคคลธรรมดา (รายละเอียดเดียวกับ §11.1 ก่อนแยกเมนู) — กดปุ่มภายในหน้าเพื่อพิมพ์เอกสารอ้างอิง
📍 เส้นทาง: /tax/cit (sub-menu ของ /tax)
👤 เงื่อนไข: tenant.entityType = CORPORATION เท่านั้น (เปลี่ยนได้ที่ /tax/settings)
คำนวณภาษีจากกำไรสุทธิ (Net Profit = รายได้ − รายจ่าย) ตามอัตรา:
| ประเภท | เกณฑ์ | อัตรา |
|---|---|---|
| SME | รายได้ ≤ 30,000,000 บาท/ปี | 0–300k = 0% · 300k–3M = 15% · เกิน 3M = 20% |
| Non-SME | รายได้ > 30 ล้าน | flat 20% ทั้งหมด |
Workflow:
/tax/citDeadline:
⚠️ คำเตือน: ผลคำนวณนี้เป็นการประมาณการเบื้องต้น — รายการค่าใช้จ่ายบางตัวอาจเป็น "ค่าใช้จ่ายต้องห้าม" ตาม ม.65 ทวิ (เช่น ค่ารับรองเกิน 0.3% ของรายได้, ค่าเสื่อมราคารถยนต์ส่วนเกิน 1 ล้าน, ฯลฯ) ต้อง บวกกลับ ในการคำนวณภาษีจริง — ปรึกษาผู้สอบบัญชีก่อนยื่น
⚠️ ข้อจำกัด: ระบบยังไม่รองรับ:
หน้าสรุปภาษีมูลค่าเพิ่มรายเดือน สำหรับร้านที่จดทะเบียน VAT — เลือกช่วงเดือน + ปุ่มพิมพ์ ภ.พ.30 + Card รายเดือน
⭐ ใหม่ 27 ส.ค. 2569 — เงินคืนโผล่ในตารางแล้ว (แถว "ใบลดหนี้")
เดิม การ์ดสรุปหักเงินคืนให้แล้ว แต่ตารางด้านล่างไม่มีแถวเงินคืนเลย ⇒ ร้านที่รวมคอลัมน์ในตารางเอง (หรือรวมจากไฟล์ Excel ที่โหลดไป) จะได้ ภาษีขายสูงกว่าความจริงเท่ายอดเงินคืนของเดือนนั้น
ใบลดหนี้ เพิ่มขึ้นมา · ยอดและ VAT เป็นค่าติดลบCN-…) + เลขบิลเดิม + เหตุผลที่คืน (ป.รัษฎากร ม.86/10 บังคับให้ระบุสาเหตุ)✅ ผลรวมของคอลัมน์ในตาราง = ตัวเลขบนการ์ดสรุป โดยไม่ต้องจำว่าต้องลบแถวไหนออกเอง 🔴 ตัวเลขบนการ์ดสรุปไม่ได้เปลี่ยนเลยสักช่อง — มันถูกอยู่แล้ว สิ่งที่เปลี่ยนคือตารางและไฟล์ Excel ⚠️ บิลของ สาขาที่ไม่ได้จดทะเบียน VAT จะได้แถวใบลดหนี้ที่ VAT = 0 ไม่ใช่เปอร์เซ็นต์ที่ระบบแต่งขึ้น
📍 เส้นทาง: /tax/wht 👤 สิทธิ์: ADMIN, OWNER
สรุปการหัก ณ ที่จ่ายรายเดือน สำหรับยื่น ภ.ง.ด.3 (จ่ายให้บุคคลธรรมดา) และ ภ.ง.ด.53 (จ่ายให้นิติบุคคล)
ใช้ข้อมูลจาก: /expenses ที่กรอก hasWht=true + whtRate + whtPayeeName + whtPayeeTaxId
การจำแนกแบบ:
| มี taxId 13 หลัก | ตัวเลขแรก | แบบ |
|---|---|---|
| ใช่ | "0" | ภ.ง.ด.53 (นิติบุคคล) |
| ใช่ | อื่นๆ | ภ.ง.ด.3 (บุคคลธรรมดา) |
| ไม่มี | — | ภ.ง.ด.3 (default) |
Workflow:
💡 เคล็ดลับ: กรอก whtPayeeTaxId ในรูปแบบ 13 หลัก ขีด/ไม่ขีดก็ได้ — ระบบ strip non-digit ก่อนเก็บ
หน้าฟอร์มตั้งค่าภาษี (entityType + deduction method + 4-group allowance) — เดิมอยู่ใน /settings ย้ายมาที่นี่เพื่อให้เป็นกลุ่มเดียวกัน
📝 ประวัติการ migration:
/reports?type=pit → /tax/pit)ระบบ MobileHub ออกเอกสารพิมพ์ A4/Thermal ได้ทั้งหมด 12 ประเภท ใช้รูปแบบ design system เดียวกัน (header 2-col + accent color cascade ผ่าน CSS variable + ลายเซ็นมาตรฐาน + ฟอนต์ Kanit). ทุกเอกสารพิมพ์ผ่านเบราว์เซอร์ — ไม่ต้องลง driver พิเศษ
ทุกเอกสารทางการเงินในระบบใช้เลขที่ running serial ต่อเนื่องตลอดปีภาษี ตามประกาศอธิบดีสรรพากร ว.196/2553 (ใบกำกับภาษีต้องมีเลขเรียงต่อเนื่อง)
Format มาตรฐาน: {PREFIX}-{branchCode}-{BEyear}-{seq:04}
| ช่อง | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| PREFIX | รหัสประเภทเอกสาร | RC (ใบเสร็จขาย), RCV (รับซ่อม), QUO (เสนอราคา), INV (ใบแจ้งหนี้ซ่อม), RCP (ใบเสร็จซ่อม), SLP (สลิปย่อ), WRT (ใบประกัน), CLM (ใบเคลม) |
| branchCode | รหัสสาขา (จาก Branch.code) | HQ, CM01, BKK01 |
| BEyear | ปี พ.ศ. | 2569, 2570 |
| seq | ลำดับ 4 หลัก | 0001, 0023, 1547 |
ตัวอย่าง:
RC-HQ-2569-0001 — ใบเสร็จขายใบแรกของสาขา HQ ปี 2569RCV-CM01-2569-0042 — ใบรับซ่อมใบที่ 42 ของสาขาเชียงใหม่ ปี 2569WRT-HQ-2569-0015 — ใบประกันใบที่ 15 ของสาขา HQ ปี 2569กฎการ reset:
RC กับ RCV คนละ counterป้องกัน race condition:
INSERT ... ON CONFLICT DO UPDATE RETURNING (atomic upsert) → 2 POS เปิดพร้อมกันไม่ได้เลขซ้ำกันเลยDocumentSerial (tenantId + branchId + docType + year พ.ศ.) เก็บ counter ปัจจุบัน⚠️ ใบเก่าก่อน 12 พ.ค. 2569 ใช้ format เดิม RC-YYYYMMDD-NNNN (ค.ศ. + reset รายวัน) — ระบบยังเก็บไว้ใน DB เหมือนเดิม ไม่ rewrite. ใบใหม่ตั้งแต่ 12 พ.ค. 2569 ใช้ format ใหม่ทั้งหมด
/masters/document-terms) ⭐ NEWข้อความ "เงื่อนไขและข้อตกลง" ที่พิมพ์ท้ายเอกสารแต่ละใบ ร้านแก้เองได้ ไม่ต้องแจ้งผู้พัฒนา — ร้านหนึ่งรับประกัน 30 วัน อีกร้าน 90 วัน บางร้านไม่รับประกันจอแตก เงื่อนไขพวกนี้ต่างกันทุกร้าน
เข้าใช้งาน: ข้อมูลหลัก → เงื่อนไขเอกสาร (เฉพาะ OWNER / ADMIN)
แก้ได้ 10 จุด:
| กลุ่ม | รายการ | พิมพ์ตรงไหน |
|---|---|---|
| งานซ่อม | ใบรับซ่อม | ท้ายใบรับซ่อม (A4) |
| ใบเสนอราคา | ท้ายใบเสนอราคา | |
| ใบเสร็จรับเงิน (งานซ่อม) | ท้ายใบเสร็จ A4 | |
| ใบเสร็จเล็ก (สลิป 80mm) | เหนือ "ขอบคุณที่ใช้บริการ" — ควรสั้น 1-2 บรรทัด | |
| การรับประกัน | ใบรับประกันการซ่อม | ท้ายใบประกัน |
| ความคุ้มครอง (กล่องเขียว) | ค่าตั้งต้นของช่อง "ความคุ้มครอง" ตอนออกใบประกัน | |
| ข้อยกเว้น (กล่องแดง) | ค่าตั้งต้นของช่อง "ข้อยกเว้น" ตอนออกใบประกัน | |
| ขาย / รับซื้อ | ใบเสร็จขายสินค้า (POS) | ทั้งแบบ A4 และสลิป |
| ใบรับซื้อเครื่องมือสอง | ท้ายสัญญาซื้อขาย |
วิธีใช้:
ปุ่ม / สวิตช์ที่มี:
| ตัว | ทำอะไร |
|---|---|
| แสดงบนเอกสาร (สวิตช์) | ปิด = ไม่พิมพ์บล็อกเงื่อนไขบนเอกสารใบนั้นเลย (ข้อความเดิมยังเก็บไว้) |
| ใช้กับทุกสาขา (ติ๊ก) | บันทึกข้อความเดียวกันให้ทุกสาขาพร้อมกัน (แสดงเมื่อมีมากกว่า 1 สาขา) |
| คืนค่าเริ่มต้น | ลบข้อความที่แก้ไว้ กลับไปใช้เงื่อนไขมาตรฐานของระบบ |
ข้อควรรู้:
<b> ลงไป จะพิมพ์ออกมาเป็นตัวอักษร <b> ตรง ๆ)| เอกสาร | ที่หน้า | รูปแบบ | สีธีม |
|---|---|---|---|
| ใบเสร็จขายสินค้า (POS) | /sales (auto-open หลัง checkout) | thermal 80mm + A4 toggle | เขียว |
| ใบรับซื้อโทรศัพท์มือสอง | /purchase (ปุ่มพิมพ์ในแต่ละ row) | A4 + คำรับรอง 5 ข้อ + ลายเซ็น 3 ฝ่าย + ช่องสำเนาบัตร ปชช. | ส้ม-แดง (เน้นกฎหมาย) |
/repair-documents)| เอกสาร | เมื่อใช้ | รูปแบบ |
|---|---|---|
| ใบรับซ่อม (INTAKE_RECEIPT) | ตอนรับเครื่องเข้าซ่อม | A4 — แสดงรูปถ่ายเครื่อง + อาการ + คำเตือน "ราคาแจ้งภายหลัง" |
| ใบเสนอราคา (QUOTATION) | หลังตรวจสอบ ก่อนซ่อม | A4 — รายการอะไหล่ + ค่าแรง + VAT |
| ใบเสร็จรับเงิน (RECEIPT) | หลังซ่อมเสร็จ ลูกค้ารับเครื่อง | A4 — items table + totals + payment + signatures |
| ใบเสร็จเล็ก (SMALL_RECEIPT) | สลิปย่อ (เครื่องพิมพ์ความร้อน) | สลิป — ความกว้างตามที่ตั้งไว้ที่สาขา (58 หรือ 80 มม.) |
| ใบประกัน (WARRANTY_CARD) | ออกพร้อมส่งคืนเครื่อง | A4 — banner ระยะประกัน + ✓ ความคุ้มครอง / ✗ ข้อยกเว้น |
⚠️ ประกันเริ่มนับจาก "วันที่กดออกใบประกัน" ไม่ใช่วันที่ลูกค้ามารับเครื่อง
วันเริ่มกับวันหมดถูกพิมพ์ลงใบตอนกดออก และ แก้ย้อนหลังไม่ได้ ถ้าออกใบตั้งแต่วันที่ซ่อมเสร็จ แต่ลูกค้ามารับอีก 3 วันถัดมา ลูกค้าจะเสียประกันไป 3 วัน
ถ้าอยากให้ประกันเริ่มนับวันที่ลูกค้ารับเครื่องจริง ให้กด "ส่งมอบแล้ว" ก่อน แล้วค่อยออกใบประกัน (ระบบจะขึ้นกล่องเตือนสีเหลืองให้เองถ้ากดออกใบตอนที่ยังไม่ได้ส่งมอบ)
ไปที่ ตั้งค่า → ข้อมูลสาขา → เครื่องพิมพ์ใบเสร็จ แล้วเลือกให้ตรงกับม้วนกระดาษที่ร้านใช้จริง
| ขนาด | ใช้กับ |
|---|---|
| 58 มม. | ม้วนเล็ก (ที่ขายทั่วไปคือ 57–58 มม.) |
| 80 มม. | ม้วนใหญ่ — ค่าเริ่มต้นของระบบ |
ระบบสั่งพิมพ์ยาวเท่าเนื้อหาในใบเสร็จอยู่แล้ว แต่เบราว์เซอร์จะทำตามก็ต่อเมื่อตั้งค่าตามนี้ครบ ถ้าไม่ตั้ง เครื่องจะป้อนกระดาษเปล่ายาวต่อท้ายทุกใบ (ร้านจริงเคยเสียกระดาษยาวเป็นเมตร)
เมื่อกดปุ่มพิมพ์ จะมีหน้าต่างพิมพ์ของเบราว์เซอร์ขึ้นมา — ตั้งตามนี้:
| # | ตั้งอะไร | ตั้งเป็น | หมายเหตุ |
|---|---|---|---|
| 1 | ส่วนหัวและส่วนท้าย | เอาติ๊กออก ⭐ | อยู่ใต้ "การตั้งค่าเพิ่มเติม" ต้องกดขยายก่อนถึงเห็น — ข้อนี้สำคัญที่สุด |
| 2 | ระยะขอบ | ค่าเริ่มต้น | ห้ามตั้ง "ไม่มี" หรือ "กำหนดเอง" |
| 3 | ขนาดกระดาษ | มีคำว่า Roll / 58mm / 80mm | ห้ามเป็น A4 |
| 4 | มาตราส่วน | ค่าเริ่มต้น (100%) | ถ้าย่อ/ขยาย ความสูงที่ระบบคำนวณจะไม่ตรง |
| 5 | ปลายทาง | เครื่องพิมพ์สลิป | ไม่ใช่ "บันทึกเป็น PDF" |
⚠️ ทำไมข้อ 1 ถึงสำคัญที่สุด เบราว์เซอร์เปิด "ส่วนหัวและส่วนท้าย" ไว้ตั้งแต่แรก และเมื่อเปิดอยู่ มันต้องกันพื้นที่ขอบ ไว้พิมพ์ที่อยู่เว็บ/วันที่/เลขหน้า จึงไม่สนใจขนาดกระดาษที่ระบบสั่ง ผลคือใบเสร็จที่ควรพอดี 1 หน้า ล้นไปหน้าที่ 2 แล้วเครื่องเดินกระดาษอีกเต็มหน้า ซึ่งเกือบทั้งหน้าเป็นกระดาษเปล่า
เอกสาร A4 ทุกใบถูกจัดให้พอดี 1 แผ่น อยู่แล้ว แต่ถ้าเครื่องไหนยังไม่เคยเอาติ๊ก "ส่วนหัวและส่วนท้าย" ออก เบราว์เซอร์จะกันพื้นที่ขอบบน-ล่างไว้พิมพ์ที่อยู่เว็บ/วันที่/เลขหน้า เหลือที่ให้เนื้อหาจริงแค่ 276.7 มม. จาก 297 มม. — ใบที่สูงกว่านั้นจะล้นไปแผ่นที่ 2 (แผ่นที่ 2 มีเนื้อหานิดเดียว)
เป็นสวิตช์ตัวเดียวกับที่แก้เรื่องสลิปกระดาษยาวข้างบน ปิดครั้งเดียวต่อเครื่อง แก้ได้ทุกใบพร้อมกัน
| # | ตั้งอะไร | ตั้งเป็น | หมายเหตุ |
|---|---|---|---|
| 1 | ส่วนหัวและส่วนท้าย | เอาติ๊กออก ⭐ | อยู่ใต้ "การตั้งค่าเพิ่มเติม" ต้องกดขยายก่อนถึงเห็น — ข้อนี้สำคัญที่สุด |
| 2 | ขนาดกระดาษ | A4 | ห้ามเป็น Letter ซึ่งสั้นกว่า A4 ราว 18 มม. — เลือกผิดล้นแน่นอน |
| 3 | ระยะขอบ | ค่าเริ่มต้น | เอกสารกำหนดขอบมาในตัวแล้ว ตั้ง "กำหนดเอง" ให้กว้างขึ้นจะล้น |
| 4 | มาตราส่วน | ค่าเริ่มต้น (100%) | ตั้งเกิน 100% จะล้นทันที |
ตัวอักษรบนใบเสร็จขายอ่านง่ายขึ้น ⭐ (10 ส.ค. 2569)
ร้านแจ้งว่าพิมพ์แล้ว "อ่านออกเฉพาะตัวหนังสือพิมพ์เข้ม" ส่วนบรรทัดเล็ก ๆ เช่นเลขติดตาม ที่อยู่ร้าน และเงื่อนไขท้ายใบ อ่านไม่ออก
สาเหตุคือเครื่องพิมพ์ความร้อนพิมพ์สีเทาไม่ได้ มันมีแค่ "จุดร้อน" กับ "ไม่ร้อน" ตัวอักษร สีเทาจึงถูกแตกเป็นลายจุด พอตัวเล็กด้วยก็เละจนอ่านไม่ออก แก้แล้วโดยเปลี่ยนทุกตัวอักษร บนใบเสร็จขายเป็นสีดำสนิท + ขยายตัวเล็กสุดขึ้น + เพิ่มความหนาเส้น ไม่ต้องตั้งอะไรเพิ่ม
⚠️ ผลข้างเคียงที่ต้องรู้: ใบเสร็จจะสูงขึ้นเล็กน้อย (ราว 7–11%)
ระบบวัดความสูงจริงก่อนสั่งพิมพ์อยู่แล้ว จึงไม่ล้นหน้า 2 โดยตัวมันเอง แต่ถ้าเครื่องไหนยังไม่ได้เอาติ๊ก "ส่วนหัวและส่วนท้าย" ออกตามตารางข้างบน จะเสี่ยงล้นมากกว่าเดิม — เครื่องที่ยังไม่ได้ตั้ง ควรตั้งให้เรียบร้อยก่อน
ตอนนี้ครอบ ทั้งใบเสร็จขายหน้า POS และใบเสร็จอย่างย่อของงานซ่อม แล้ว ทั้งสองใบใช้มาตราส่วนตัวอักษรชุดเดียวกัน จะได้ไม่มีใบไหนอ่านง่ายกว่าอีกใบ
ใบเสร็จงานซ่อมจะยาวขึ้นราว 5 มม. ต่อใบ ที่กระดาษ 80 มม. (จาก 190 เป็น 195 มม.) เพราะแถวข้อมูลตัวโตขึ้น — แลกกับการที่อ่านออก
เอกสาร A4 ทุกใบพิมพ์ออกมาคมขึ้น ⭐ (12 ส.ค. 2569)
ร้านแจ้งว่าพิมพ์ใบรับซ่อมด้วยเครื่องอิงค์เจ็ทแล้ว "ตัวหนังสือเบลอ" ทั้งที่หัวพิมพ์ปกติดี (ร้านส่งผลตรวจหัวพิมพ์มาแล้ว คมทุกเส้น ไม่ตัน) ตรวจแล้วพบว่าเป็นที่ระบบเรา ไม่ใช่ที่เครื่องพิมพ์ และมี 2 สาเหตุซ้อนกัน
1. ตัวหนังสือบนเอกสาร A4 ไม่เคยเป็นสีดำจริงเลยสักจุด — เป็นเทาอมน้ำเงิน ซึ่งเครื่องอิงค์เจ็ท พิมพ์ด้วยหมึกดำล้วนไม่ได้ ต้องผสมหมึกฟ้ากับชมพูทับลงไปทุกจุด ขอบตัวอักษรจึงเหลื่อมและฟุ้ง (ผลตรวจหัวพิมพ์ที่ร้านส่งมาแล้วขึ้นหมึกสีเต็มทุกช่อง กลายเป็นหลักฐานยืนยันข้อนี้พอดี)
2. ฟอนต์ Kanit ไม่เคยถูกโหลดในหน้าต่างพิมพ์เลย — เครื่องจึงพิมพ์ด้วยฟอนต์สำรองของ Windows ที่เส้นบางกว่า และทำให้การตั้ง "ตัวหนา" ในระบบไม่มีผลจริง
แก้แล้ว ครอบเอกสาร A4 ทุกใบในระบบ ไม่ต้องตั้งอะไรเพิ่มที่เครื่อง:
สิ่งที่ร้านจะสังเกตเห็น: หน้าตาตัวอักษรบนเอกสารเปลี่ยนไป (จากฟอนต์สำรองของ Windows เป็น Kanit) และเข้มขึ้นทุกใบ
ใบรับซ่อมจะยาวขึ้นราว 5 มม. เพราะตัวอักษรโตขึ้น — วัดแล้วยังอยู่ 1 หน้าเท่าเดิม เอกสารใบอื่นความสูงเท่าเดิมทุกใบ (เทียบก่อน/หลังการเปลี่ยนฟอนต์รอบนี้)
⚠️ "อยู่ 1 หน้า" ข้างบนหมายถึงเครื่องที่เอาติ๊ก "ส่วนหัวและส่วนท้าย" ออกแล้ว เครื่องที่ยังไม่ได้ปิด จะเหลือที่ให้เนื้อหาแค่ 276.7 มม. ซึ่งใบรับซ่อม (284.3 มม.) เกินอยู่ — ดูหัวข้อ "เอกสาร A4 พิมพ์ออกมาได้ 2 แผ่น" ข้างบน
แบบ ภ.พ.30 เลิกพิมพ์กระดาษหน้าที่ 2 เปล่า ๆ ⭐ (12 ส.ค. 2569)
เดิม ภ.พ.30 ล้นไปหน้าที่ 2 บนเครื่องที่ยังไม่ได้เอาติ๊ก "ส่วนหัวและส่วนท้าย" ออก (ดูตารางตั้งค่าเบราว์เซอร์ด้านบน) เพราะเนื้อหาสูงกว่าพื้นที่ที่เหลืออยู่ 13 มม.
หมายเหตุ (19 ส.ค. 2569): ตอนนั้น ภ.พ.30 เป็นใบเดียวที่วัดแล้วเกิน — วัดใหม่ทั้งชุด 14 ใบ พบว่ายังมีอีก 2 ใบที่เกินเช่นกัน (ใบส่งคืนหลังเคลม 290.9 มม. · ใบรับซ่อม 284.3 มม.) ทั้ง 2 ใบแก้ได้ด้วยการเอาติ๊กออกเหมือนกัน ดูหัวข้อ "เอกสาร A4 พิมพ์ออกมาได้ 2 แผ่น" ข้างบน
แก้แล้วโดยบีบระยะห่างระหว่างส่วนให้แน่นขึ้น — ตอนนี้พิมพ์ 1 หน้าทุกเครื่อง ไม่ว่าจะตั้งค่าเบราว์เซอร์ไว้แบบไหน
เนื้อหาครบเท่าเดิมทุกบรรทัด ไม่มีอะไรถูกตัดออก และขนาด ความเข้ม สีของตัวอักษรเท่าเดิมทุกจุด สิ่งที่ร้านจะสังเกตเห็นคือช่องไฟระหว่างส่วนแน่นขึ้น และเส้นสำหรับเซ็นชื่อสั้นลงเล็กน้อย (ยังเซ็นได้ปกติ)
ใครแก้ราคาค่าซ่อมได้บ้าง — เปลี่ยนแล้ว ⭐ (11 ส.ค. 2569)
เดิมทุกบทบาทแก้ราคางานซ่อมและตีตรา "รับเงินแล้ว" ได้ ตอนนี้จำกัดให้เฉพาะ เจ้าของ · ผู้ดูแล · ผู้จัดการ · ช่าง เท่านั้น
สแกนใบรับซ่อมเก่าเก็บเงินไม่ได้แล้ว ⭐ (11 ส.ค. 2569)
งานที่ซ่อมเสร็จก่อนวันที่ร้านเปิดโหมดเก็บเงินผ่านหน้าขาย จะสแกนเก็บเงินไม่ได้ เพราะงานยุคนั้นระบบยังไม่ได้บันทึกว่าจ่ายหรือยัง — ส่วนใหญ่คือจ่ายไปแล้ว ถ้าไม่กันไว้จะกลายเป็นเก็บเงินซ้ำจากลูกค้า
ถ้ามีงานเก่าที่ค้างจ่ายจริง ผู้จัดการขึ้นไปกดข้ามได้ จากปุ่มในหน้าคิวรอชำระ
สำเนาบัตรประชาชนและสลิปโอนเงินถูกปิดไม่ให้เข้าถึงจากภายนอก ⭐ (11 ส.ค. 2569)
เดิมรูปพวกนี้เปิดดูได้ถ้ารู้ลิงก์ ตอนนี้ต้องเข้าสู่ระบบก่อนเสมอ และร้านอื่นเปิดของร้านเราไม่ได้ ไม่ต้องทำอะไรเพิ่ม รูปเครื่องซ่อม รูปสินค้า และโลโก้ร้าน ยังแสดงเหมือนเดิมทุกอย่าง
ตัวอักษรบนสลิปเปลี่ยนเป็นฟอนต์ของระบบเอง ⭐ (10 ส.ค. 2569)
เดิมหน้าต่างพิมพ์ดึงฟอนต์จากอินเทอร์เน็ตซึ่งโหลดไม่สำเร็จ เครื่องจึงพิมพ์ด้วยฟอนต์สำรอง ของ Windows ตอนนี้ระบบส่งฟอนต์ให้เองแล้ว ไม่ต้องตั้งค่าอะไรเพิ่ม
🔧 ตั้งครบทั้ง 5 ข้อแล้วยังยาวอยู่ — ให้ไปตรวจที่ไดรเวอร์เครื่องพิมพ์: Windows → การตั้งค่า → เครื่องพิมพ์ → เลือกเครื่องพิมพ์สลิป → การกำหนดลักษณะการพิมพ์ → ดูช่อง ขนาดกระดาษ / Paper Length ว่าตั้งค้างเป็น A4 (297 มม.) หรือยาวกว่านั้นอยู่หรือไม่ เครื่องพิมพ์สลิปบางรุ่นต้องเลือกเป็น "Roll Paper" หรือเพิ่มขนาดกำหนดเองในไดรเวอร์ก่อน
📌 หมายเหตุเรื่อง VAT บนใบเสร็จ — ราคาค่าซ่อมที่กรอกในระบบเป็น ราคารวม VAT แล้ว ใบเสร็จจึงแสดงแบบ ถอด VAT ออกจากยอด (เช่น ยอด ฿4,000 → ก่อน VAT ฿3,738.32 + VAT 7% ฿261.68) ไม่ใช่บวกเพิ่มบนยอด ทำให้ยอดบนใบกำกับภาษีตรงกับเงินที่รับจริงเสมอ
/repair-warranty)| โหมด | เมื่อใช้ | สีธีม |
|---|---|---|
| ใบรับเครื่องเข้าเครม (intake) | ตอนลูกค้านำเครื่องมาเครม — ออกได้ทุกสถานะของ claim | ส้ม |
| ใบส่งคืนหลังเครม (resolution) | ตอนเครมเสร็จส่งคืนลูกค้า — ออกได้เฉพาะ status COMPLETED | เขียว |
ทั้ง 2 ใบมี: warranty linkbox + days-remaining badge สี dynamic, ลายเซ็น 2-3 ฝ่าย, QC checklist 6 ข้อ (resolution mode)
📍 หน้า: /payroll (ปุ่ม 🖨️ "พิมพ์สลิปเงินเดือน" ในแถว + ในปุ่ม detail modal)
👤 สิทธิ์: OWNER, ADMIN, MANAGER
🎨 ธีม: cyan (ตรงกับสีแบรนด์ของแอป)
PayrollAdjustment (split อัตโนมัติด้วย isDeduction)📍 หน้า: /attendance (ปุ่ม "ใบสรุปรายเดือน" ใน header)
👤 สิทธิ์: ADMIN, MANAGER
/attendance/report API → พิมพ์ A4 1 หน้า📍 หน้า: /spare-parts → Modal "ประวัติการเคลื่อนไหว" (ปุ่มพิมพ์ในแต่ละ transaction row)
| โหมด | Trigger | สีธีม |
|---|---|---|
| ใบเบิกอะไหล่ (issue) | transaction type = OUT (เบิกใช้กับงานซ่อม) | teal |
| ใบรับสินค้าเข้าคลัง (receive) | transaction type = IN (ซื้อมาจาก supplier) | indigo |
📍 เปิดได้ที่: เปิดอัตโนมัติหลังกด "ยืนยันคืนเงิน" ใน RefundWizard (§6.6)
สีธีม: แดง (#dc2626) — แสดงการคืนเงิน/เงินไหลออก ฐานทางกฎหมาย: มาตรา 86/10 แห่งประมวลรัษฎากร (ส่วนที่ 10 ใบกำกับภาษี ใบเพิ่มหนี้ ใบลดหนี้)
ใบลดหนี้ออกได้เมื่อ:
โครงสร้างเอกสาร (compliance ตามมาตรา 86/10):
branch.taxId, format X-XXXX-XXXXX-XX-X)customer.idCard 13 หลัก)amount × rate / (100 + rate) สำหรับราคา VAT-inclusive)💡 สำคัญ: ผู้ซื้อ (ลูกค้าที่จด VAT) ต้องนำใบลดหนี้ไปใช้ ภายในเดือนที่ได้รับ เท่านั้น ไม่สามารถใช้ข้ามเดือนได้
⚠️ ถ้าสาขายังไม่จด VAT — ระบบแสดง Alert "ใบลดหนี้นี้ใช้เป็นเอกสารภายในร้านเท่านั้น" ไม่มีผลทางภาษี
📍 เปิดได้ที่: ปุ่ม "ปิดยอดวันนี้" มุมขวาบน /sales-history (§6.6)
สีธีม: ฟ้า (#0891b2) + กล่องเงินสดเขียว มาตรฐาน: Retail Z Report (ทั่วโลก) + Thai VAT compliance สำหรับ ภ.พ.30
โครงสร้างเอกสาร (เรียงลำดับการอ่าน):
Z-YYYYMMDD-{branchCode} + วันที่ (ภาษาไทย, พ.ศ.)Workflow ปิดร้านมาตรฐาน:
💡 ภ.พ.30 friendly: VAT section ของ Z Report ตรงกับ map ใน /reports VAT (§11) — ใช้คู่กันได้ตอนยื่นภาษีรายเดือน
⚠️ Z Report ดูย้อนหลังได้ — เลือกวันที่ที่ DatePicker แล้วเรียกข้อมูลใหม่ (เก็บถาวรในระบบ)
/reports)นอกเหนือจากเอกสารพิมพ์ ระบบยัง export รายงานเป็น Excel ได้ 6 ประเภท:
@page margin: 12mm ในตัวเอง)📦 แพ็คเกจ: Enterprise เท่านั้น
ในแพ็คเกจ Enterprise ระบบจะ ลบเครื่องหมาย "MobileHub" / "AJ Software Dev." อัตโนมัติ จาก:
→ เอกสารและหน้าจอทั้งหมดจะเหมือน "ระบบของร้านคุณเอง" ไม่มี branding ของ MobileHub ปรากฏให้ลูกค้าเห็น
💡 เหมาะกับธุรกิจขนาดใหญ่ที่ต้องการแบรนด์ดิ้งของตัวเอง (เช่น Aj Mobile Group ใช้ pos.ajmobile.com แทน mobilehub.ajsoftwaredev.com)
📍 หน้า: /portal/billing → ปุ่ม "ต่ออายุ" หรือ "อัพเกรด" → /portal/upgrade
เดิมหน้าเลือกแพ็คเกจแสดง ราคาเต็มของแพ็คเกจ ทุกกรณี รวมถึง QR พร้อมเพย์ที่สร้างขึ้น แต่เวลาอัพเกรดกลางรอบบิลระบบเรียกเก็บเฉพาะส่วนต่างของวันที่เหลือ ซึ่งน้อยกว่า → ลูกค้าที่สแกน QR จะโอนเกินโดยที่ระบบไม่รู้ว่าต้องคืนเท่าไหร่
ตอนนี้ทุกตัวเลขบนหน้าจอ (ยอดรวม · QR · ยอดโอน · ปุ่มคัดลอกยอด · ยอดบนแท็บบัตรเครดิต) มาจากยอดเดียวกับที่จะอยู่ในใบชำระ และระบบจะไม่ให้กดชำระเงินจนกว่าจะคำนวณยอดได้
เมื่อยอดไม่เท่าราคาเต็ม หน้าจอจะแจกแจงให้เห็นว่าหักอะไรออกไป:
ราคาเอ็นเตอร์ไพรส์ ฿2,499 /เดือน
หักส่วนที่ชำระไว้แล้ว −฿1,999
เหลืออีก 15 วันในรอบบิลปัจจุบัน
─────────────────────────────────────────────
ยอดที่ต้องชำระตอนนี้ ฿500
พร้อมข้อความอธิบายว่า รอบถัดไปจะกลับไปเป็นราคาเต็ม และเก็บวันไหน — กันความเข้าใจผิดว่าได้ราคาที่ลดแล้วไปตลอด
| สถานการณ์ | ยอดที่เรียกเก็บ | เหตุผล |
|---|---|---|
| อัพเกรดกลางรอบบิล | เฉพาะส่วนต่างของวันที่เหลือ | จ่ายค่าแพ็คเกจเดิมของรอบนี้ไปแล้ว ไม่เก็บซ้ำ |
| อยู่ในช่วงทดลองใช้ | เต็มจำนวน | ช่วงทดลองไม่เคยมีการเรียกเก็บเงิน จึงไม่มีส่วนลดจากรอบก่อน |
| ต่ออายุหลังหมดอายุ | เต็มจำนวน | รอบเดิมจบไปแล้ว |
| ลดแพ็คเกจ | ฿0 | ไม่เก็บเงินและไม่คืนเงินส่วนต่าง |
💡 ร้านที่ซื้อระหว่างช่วงทดลองใช้ ไม่เสียวันที่เหลือ — รอบใหม่นับต่อจากวันหมดทดลอง
นอกจากบอกวันที่จะเริ่มมีผลแล้ว หน้าจอจะแสดงโควตาที่จะลดลงพร้อมจำนวนที่ใช้อยู่จริง
โควตาที่จะลดลง
สาขา ไม่จำกัด → 1 ใช้อยู่ 2
ผู้ใช้งาน ไม่จำกัด → 3 ใช้อยู่ 8
ถ้าใช้เกินโควตาใหม่ ระบบจะเตือนเป็นกล่องแดงว่า ข้อมูลเดิมจะไม่ถูกลบ แต่จะเพิ่มรายการใหม่ไม่ได้จนกว่าจะลดลงมาอยู่ในโควตา
เดิมถ้ามีใบชำระค้างอยู่ (กดผิดแพ็คเกจ · เปลี่ยนใจ) จะเปลี่ยนแพ็คเกจไม่ได้อีกเลย เพราะระบบกันไม่ให้มีรายการค้าง 2 ใบพร้อมกัน และไม่มีปุ่มให้ยกเลิกทั้งฝั่งร้านและฝั่งทีมงาน
ตอนนี้ยกเลิกเองได้ 2 ทาง:
/portal/billing → คลิกรายการในประวัติการชำระเงิน → ปุ่ม "ยกเลิกรายการนี้"/portal/upgrade → ถ้ามีใบค้าง หน้าจอจะบอกพร้อมปุ่มยกเลิกให้ตรงนั้นเลย⚠️ ยกเลิกได้เฉพาะรายการที่ยังไม่ได้แนบสลิป — รายการที่แนบสลิปแล้วต้องให้ทีมงานตรวจ เพื่อไม่ให้หลักฐานการโอนหายไปในกรณีที่โอนเงินมาแล้วจริง
ถ้าทีมงานเป็นฝ่ายยกเลิกให้ (เช่นพบว่ารายการนั้นยอดไม่ถูกต้อง) คุณจะได้รับ การแจ้งเตือนในระบบ ทันที ไม่ต้องเข้ามาเช็คเอง — ข้อความจะบอกชัดว่า "รายการชำระเงินถูกยกเลิก ... ยังไม่มีการเรียกเก็บเงิน"
💡 ข้อความนี้ต่างจาก "สลิปไม่ผ่านการตรวจสอบ" ซึ่งใช้กับกรณีที่คุณโอนเงินมาแล้ว แต่สลิปมีปัญหา (กรณีนั้นจะบอกให้อัพโหลดสลิปใหม่) — ถ้าเห็นข้อความ "ถูกยกเลิก" แปลว่ายังไม่มีเงินออกจากบัญชีคุณ ไม่ต้องตามหาสลิป
ในประวัติการชำระเงิน รายการที่ถูกยกเลิกจะขึ้นป้าย "ยกเลิกแล้ว" สีเทา ส่วนรายการที่สลิปไม่ผ่านจะขึ้น "ไม่ผ่านการตรวจสอบ" สีแดง — คนละความหมายกัน
ร้านที่ทีมงานตั้งค่าไว้เป็นแบบ ไม่มีกำหนดหมดอายุ (เช่นร้านสาธิต หรือข้อตกลงพิเศษ) จะเห็นคำว่า "ไม่หมดอายุ" แทนวันที่ในหน้า Billing และหน้ารายละเอียดการชำระเงิน
ก่อนหน้านี้หน้าจอแสดงเป็นวันที่จริงในระบบ (เช่น "ต่ออายุ 1 ม.ค. 43" หรือ "สิ้นสุด 1 มกราคม 10543") ซึ่งอ่านแล้วเข้าใจผิดว่าเป็นข้อมูลเก่าหรือระบบผิดพลาด — แก้ให้แสดงเป็นข้อความตรงไปตรงมาแล้วเมื่อ 7 ส.ค. 2569
ต่ออายุเมื่อแพ็คเกจหมดอายุแล้ว
เดิมร้านที่หมดอายุ (รวมถึงร้านที่หมดช่วงทดลองใช้) กดปุ่มต่ออายุแล้วระบบแจ้งว่าไม่พบแพ็คเกจ ต้องติดต่อทีมงานให้ออกใบชำระให้ ตอนนี้ต่ออายุเองได้แล้ว ทั้งกรณีหมดอายุ ค้างชำระ และถูกระงับชั่วคราว
ลดแพ็คเกจ (Downgrade) — ไม่ต้องโอนเงิน
เดิมหน้าจอบังคับให้แนบสลิปทุกกรณีรวมถึงตอนลดแพ็คเกจ ทั้งที่การลดแพ็คเกจไม่มีค่าใช้จ่าย ทำให้มีลูกค้าโอนเงินมาโดยไม่จำเป็น ตอนนี้เมื่อเลือกแพ็คเกจที่ถูกกว่า ระบบจะไม่ขอสลิป และแจ้งชัดเจนว่า:
/portal/billing)ระบบไม่ระงับร้านที่จ่ายเงินแล้ว
เดิมถ้าแอดมินตรวจสลิปไม่ทันภายใน 7 วันหลังหมดอายุ ระบบจะระงับร้านอัตโนมัติแม้ลูกค้าจะโอนเงินและแนบสลิปแล้ว ตอนนี้ระบบจะ ข้ามการระงับ ถ้ายังมีสลิปค้างรอตรวจ และแจ้งเตือนทีมงานให้รีบตรวจแทน
อีเมลแจ้งผลการชำระเงิน
หลังแอดมินอนุมัติหรือปฏิเสธสลิป ระบบจะส่งอีเมลแจ้งผลไปที่อีเมลของร้าน (กรณีปฏิเสธจะระบุเหตุผลและวิธีแก้ไข) ไม่ต้องเข้ามาเช็คในระบบเอง
📍 หน้า: /portal/contact (เมนู ติดต่อ → ติดต่อทีมงาน)
👤 สิทธิ์: ทุก Role
ใช้งานไม่เป็น ติดตรงไหน อยากขอเวลาทดลองใช้เพิ่ม หรือถามเรื่องแพ็คเกจ — ทักทีมงานได้จากในระบบ
ช่องทาง
| ช่องทาง | เหมาะกับ |
|---|---|
แชท LINE @052bzovk (มี QR ให้สแกน + ปุ่มคัดลอก ID) | ถาม-ตอบเร็ว คุยต่อเนื่องในแชทเดิมบนมือถือ |
| แชท Messenger (เพจ Facebook ของทีมงาน) | ถ้าสะดวกคุยทาง Facebook |
| แจ้งปัญหา / ติดตามเรื่อง (Support Tickets — §12.1 ด้านล่าง) | ปัญหาที่ต้องมีเลขอ้างอิงและติดตามสถานะในระบบ |
| คู่มือการใช้งาน | หาวิธีทำด้วยตัวเอง |
ปุ่มลอย "ติดต่อเรา" (มุมขวาล่าง)
อีเมลที่ร้านจะได้รับจากระบบ (ส่งไปที่อีเมลหลักของร้าน)
| เมื่อไร | เนื้อหา |
|---|---|
| วันที่ 1 และวันที่ 3 หลังสมัคร ถ้ายังไม่ได้เริ่มบันทึกอะไรเลย | วิธีเริ่มใช้ 3 ขั้น + ช่องทางทักทีมงาน (ส่งแต่ละฉบับครั้งเดียว) |
| ช่วงทดลองใช้เหลือ 3 วัน และ 1 วัน | แจ้งวันหมด · ร้านที่ยังไม่ได้เริ่มใช้จะได้ข้อความชวนลอง/ขอขยายเวลา · ร้านที่ใช้แล้วจะได้ข้อความเลือกแพ็คเกจ |
| วันที่ช่วงทดลองใช้สิ้นสุด | ระบบหยุดให้บันทึกข้อมูลใหม่ ข้อมูลเดิมยังอยู่ครบ ชำระเงินแล้วใช้ต่อได้ |
| แพ็คเกจจะหมดอายุในอีก 7 · 3 · 1 วัน | เตือนต่ออายุ — หากเลยวันหมดอายุโดยยังไม่ชำระ บัญชีจะถูกระงับชั่วคราวภายใน 7 วัน (ข้อมูลไม่หาย) |
💡 ตอบกลับอีเมลจากระบบได้เลย ข้อความจะถึงทีมงาน — แต่ถ้าต้องการคำตอบเร็ว ทักทาง LINE จะเร็วกว่า 📭 ไม่เห็นอีเมล — ตรวจโฟลเดอร์ อีเมลขยะ (Spam/Junk) แล้วกด "ไม่ใช่สแปม"
📍 หน้า: /portal/tickets
👤 สิทธิ์: ทุก Role
วัตถุประสงค์: ยื่น Ticket เพื่อขอความช่วยเหลือหรือรายงานปัญหาไปยังทีมงาน MobileHub
ขั้นตอนสร้าง Ticket:
สถานะ Ticket:
| สถานะ | สี | ความหมาย |
|---|---|---|
| OPEN | น้ำเงิน | รอทีมงานรับเรื่อง |
| IN_PROGRESS | เหลือง | ทีมงานกำลังดำเนินการ |
| RESOLVED | เขียว | แก้ไขแล้ว |
| CLOSED | เทา | ปิด Ticket |
📍 หน้า: /portal/announcements
👤 สิทธิ์: ทุก Role
วัตถุประสงค์: รับข่าวสารประกาศจากทีมงาน MobileHub — อัปเดต, การบำรุงรักษา, โปรโมชั่น
ฟีเจอร์:
📍 หน้า: /portal/billing
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: ดูสถานะ Subscription ปัจจุบัน ประวัติการชำระเงิน ดาวน์โหลดใบเสร็จ
ข้อมูลที่แสดง:
ขั้นตอนชำระค่าบริการ:
หน้า /portal/payment/{id} และ /portal/upgrade มีแท็บช่องทางชำระเงินให้เลือก
โดย PromptPay QR เป็นค่าตั้งต้น และอยู่แท็บแรกเสมอ
| ช่องทาง | ยืนยันอย่างไร | เหมาะกับ |
|---|---|---|
| PromptPay QR (ค่าตั้งต้น) | สแกน → โอน → แนบสลิป → รอตรวจสอบ | ทุกกรณี — ไม่มีค่าธรรมเนียม |
| โอนผ่านบัญชี | โอนเอง → แนบสลิป → รอตรวจสอบ | ผู้ที่โอนผ่านแอปธนาคารเอง |
| บัตรเครดิต (ตัวเลือกเสริม) | จ่ายบนหน้าของ Stripe → ยืนยันอัตโนมัติ ไม่ต้องแนบสลิป | ผู้ที่อยากให้เปิดใช้งานทันที ไม่อยากรอตรวจสลิป |
แท็บ "บัตรเครดิต" จะแสดงก็ต่อเมื่อผู้ดูแลระบบตั้งค่าครบและ เปิดใช้งาน ช่องทางนี้ไว้เท่านั้น ถ้ายังไม่เปิด จะไม่เห็นแท็บนี้เลย (ไม่ใช่เห็นแล้วกดไม่ได้) — และผู้ดูแลระบบ ปิดชั่วคราวได้ตลอดเวลา เช่นช่วงปรับปรุงระบบชำระเงิน ไม่ว่าจะเปิดหรือปิด PromptPay กับการโอนผ่านบัญชีก็ใช้งานได้ตามปกติเสมอ
ขั้นตอนชำระด้วยบัตรเครดิต:
⚠️ ถ้าจ่ายแล้วแต่หน้ายังไม่ขึ้นว่าชำระแล้ว — อย่าชำระซ้ำ การยืนยันวิ่งคนละทางกับเบราว์เซอร์ จึงอาจช้ากว่าหน้าจอเล็กน้อย ให้กด "รีเฟรช" อีกครั้งใน 1-2 นาที · ถ้าเกิน 10 นาทีแล้วยังไม่ขึ้น ให้ติดต่อทีมงานพร้อมแจ้งเวลาที่ชำระ (เงินไม่หาย — ระบบแจ้งเตือนทีมงานให้อัตโนมัติอยู่แล้ว)
ถ้าเห็นป้าย "โหมดทดสอบ" แปลว่าผู้ดูแลระบบกำลังตั้งค่าอยู่ — จะไม่มีการเรียกเก็บเงินจริง กรุณาใช้ PromptPay แทนจนกว่าป้ายนี้จะหายไป
สถานะการชำระ:
| สถานะ | คำอธิบาย |
|---|---|
| PENDING | รอชำระเงิน |
| SLIP_UPLOADED | อัปโหลด Slip แล้ว รอตรวจสอบ |
| APPROVED | ยืนยันแล้ว |
| REJECTED | ปฏิเสธ (Slip ไม่ถูกต้อง) |
| REFUNDED | คืนเงินแล้ว |
การแจ้งเตือน (real-time bell + Web Push):
เมื่อ admin ตรวจสลิปแล้ว — ระบบจะส่ง notification ไปที่ OWNER + ADMIN ของ tenant ทันที (Socket.IO real-time + Web Push ถ้า subscribe):
| เหตุการณ์ | ข้อความที่ tenant ได้รับ |
|---|---|
| ✅ Admin อนุมัติ | "การชำระเงินได้รับการอนุมัติ — แพ็คเกจ X ฿Y พร้อมใช้งาน" |
| ⚠️ Admin ปฏิเสธ | "สลิปไม่ผ่านการตรวจสอบ — จำนวน ฿Y — เหตุผล + กรุณาอัพโหลดใหม่" |
| 🤖 OCR auto-verify ผ่าน | toast "✓ ตรวจสลิปสำเร็จ — แพ็คเกจของคุณพร้อมใช้งาน" + status APPROVED ทันที |
| 🤖 OCR auto-verify ไม่ผ่าน | toast "อัพโหลดสำเร็จ แต่ตรวจอัตโนมัติไม่ผ่าน (เหตุผล) — รอแอดมินตรวจ" |
คลิก notification จาก bell → deep link ไป /portal/billing ดูสถานะใหม่ + เหตุผลปฏิเสธ (ถ้ามี)
OCR Auto-verify (admin ตั้งค่าได้ที่ /admin/settings → Slip Verify):
ถ้า admin เปิดโหมด ocr_auto ระบบจะส่งสลิปไป EasySlip API ตรวจอัตโนมัติ — ถ้า:
OCR easyslip: amount_mismatch (slip ฿657.43 ≠ expected ฿1499) แล้วตัดสินใจ approve/reject เองเอกสารที่ระบบออกให้หลังท่านชำระค่าบริการรายเดือน/รายปีเรียบร้อยแล้ว
สิ่งที่เปลี่ยนในรอบนี้
| เดิม | ตอนนี้ |
|---|---|
หัวเอกสารพิมพ์ว่า INVOICE | "ใบเสร็จรับเงิน / RECEIPT" |
| ภาษาไทยพิมพ์ไม่ออก — ชื่อร้าน ที่อยู่ ชื่อแพ็คเกจ กลายเป็นตัวอักษรขยะ | พิมพ์ภาษาไทยได้ครบทุกบรรทัด |
| คอลัมน์ "จำนวนเงิน" ขึ้น ฿0 ทั้งที่ราคา/หน่วยและยอดรวมมีตัวเลข | ตัวเลขบนใบ บวกลงตัวทุกบรรทัด |
| ข้อมูลผู้ออกใบเสร็จถูกฝังไว้ในโปรแกรม (เป็นข้อมูลตัวอย่าง ไม่ใช่ของจริง) | อ่านจากค่าที่ทีมงานตั้งไว้ในระบบ |
ทำไมถึงเปลี่ยนหัวเอกสาร — "ใบแจ้งหนี้" (Invoice) ตามความหมายคือเอกสารที่ออก ก่อน รับเงิน แต่ไฟล์นี้ออกให้ หลัง รับเงินแล้ว เอกสารที่ถูกต้องจึงเป็น ใบเสร็จรับเงิน (ใบรับ ตามมาตรา 105) และตามมาตรา 105 ทวิ เอกสารต้องมีอักษรไทย ใช้ภาษาอังกฤษล้วนไม่ได้
ข้อมูลบนใบเสร็จ
- หรือช่องว่าง เอกสารจึงดูสมบูรณ์ทั้งกรณีกรอกครบและกรอกไม่ครบℹ️ บรรทัด "โดย [ชื่อ-นามสกุล]" มีไว้ทำไม — ถ้าร้านของท่านเป็นนิติบุคคลและต้องหักภาษี ณ ที่จ่าย ท่านต้องออกหนังสือรับรองการหักภาษี (50 ทวิ) ในชื่อบุคคลที่ผูกกับเลขประจำตัวผู้เสียภาษี 13 หลัก ถ้าใบเสร็จมีแต่ชื่อร้าน ฝ่ายบัญชีของท่านจะจับคู่เอกสารไม่ได้
⚠️ ใบเสร็จนี้ไม่มีบรรทัด VAT และไม่ใช่ใบกำกับภาษี — ผู้ให้บริการยังไม่ได้จดทะเบียนภาษีมูลค่าเพิ่ม จึงไม่มีสิทธิ์เรียกเก็บ VAT และออกใบกำกับภาษีไม่ได้ · ใบเสร็จรับเงินนี้ใช้เป็นหลักฐานลงบัญชีรายจ่ายของท่านได้ตามปกติ และไฟล์ PDF ที่ได้รับทางอิเล็กทรอนิกส์ใช้เป็นหลักฐานได้ตามกฎหมาย (พ.ร.บ.ธุรกรรมทางอิเล็กทรอนิกส์) ไม่ต้องพิมพ์ลงกระดาษเก็บ
⚠️ ยังทำไม่ได้ในรอบนี้ (อยู่ระหว่างดำเนินการ)
ไฟล์ใบเสร็จ ยังไม่ถูกแนบไปกับอีเมล "ชำระเงินสำเร็จ" และหน้า /portal/billing ยังกดดาวน์โหลดเองไม่ได้
ระหว่างนี้ถ้าท่านต้องการใบเสร็จเพื่อใช้ลงบัญชี กรุณาแจ้งทีมงาน แล้วจะส่งให้ทางอีเมล
📍 หน้า: /portal/upgrade
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: ดูและเปรียบเทียบแพ็กเกจ เลือกอัปเกรดหรือดาวน์เกรด
แพ็กเกจที่ให้บริการ:
| แพ็กเกจ | ผู้ใช้ | Branches | Storage | ราคา |
|---|---|---|---|---|
| STARTER | 5 คน | 1 สาขา | 1 GB | ติดต่อ |
| PROFESSIONAL | 20 คน | 5 สาขา | 10 GB | ติดต่อ |
| ENTERPRISE | ไม่จำกัด | ไม่จำกัด | 100 GB | ติดต่อ |
เดิม ไม่มีอะไรในระบบบอกเลยว่าใกล้หมดอายุ — ร้านรู้ตัวตอนกดบันทึกแล้วไม่ได้ ซึ่งสายไปแล้ว
ตอนนี้เมื่อเหลือ ไม่เกิน 7 วัน จะมีแถบขึ้นด้านบนของทุกหน้า สีบอกความเร่งด่วน:
| เหลือ | สี | ปิดได้ไหม |
|---|---|---|
| 4–7 วัน | เหลือง | ปิดได้ |
| 1–3 วัน | ส้ม | ปิดได้ |
| วันนี้วันสุดท้าย / หมดแล้ว | แดง | ปิดไม่ได้ |
เดิมกดปุ่มต่ออายุ/เปลี่ยนแพ็คเกจซ้ำ ๆ จะได้ ใบชำระใบใหม่ทุกครั้ง (กด 5 ครั้ง = 5 ใบ) ตอนนี้ระบบจะบอกว่ามีใบค้างอยู่ใบไหน พร้อมบอกทางออกที่ตรงกับสถานะของใบนั้น:
| สถานะใบที่ค้าง | ระบบบอกว่า |
|---|---|
| ยังไม่แนบสลิป | ยกเลิกใบเดิมก่อน แล้วเลือกใหม่ได้ทันที (มีปุ่มให้ตรงนั้น) |
| แนบสลิปแล้ว | รอทีมงานตรวจ หรือติดต่อทีมงาน — ยกเลิกเองไม่ได้ เพื่อไม่ให้หลักฐานการโอนหาย |
💡 ถ้าใกล้หมดอายุแล้วระบบสร้างใบต่ออายุให้ล่วงหน้าอัตโนมัติ (7/3/1 วันก่อนหมด) ใบนั้นก็นับเป็นใบค้างเหมือนกัน — จะเปลี่ยนแพ็คเกจต้องยกเลิกใบนั้นก่อน
เดิมถ้ายกเลิกใบ ฿14,990 แล้วเลือกแพ็คเกจถูกกว่า การอัปโหลดสลิปยังปลุกใบเก่ากลับมาได้ ตอนนี้ใบที่ คุณยกเลิกเอง จะแนบสลิปไม่ได้ · เปิดหน้าจ่ายบัตรไม่ได้ · และ ไม่สร้าง QR ให้
เดิมถ้าทีมงานปฏิเสธสลิปครั้งหนึ่ง แล้วคุณส่งใหม่จนได้รับอนุมัติ แพ็คเกจจะไม่เปลี่ยน (ระบบทำใบใหม่โดยลืมพกข้อมูล "จะเปลี่ยนไปแพ็คเกจไหน" ไปด้วย) — แก้แล้ว
เมนูนี้ซ่อนจากพนักงานคนอื่นอยู่แล้ว แต่เดิมยังเรียกใช้ผ่านช่องทางตรงได้ ตอนนี้ปิดครบทั้ง 3 อย่าง: เปลี่ยนแพ็คเกจ · ยกเลิกใบชำระ · ยกเลิกนัดลดแพ็คเกจ
✅ การแนบสลิปยังทำได้ทุกบทบาทโดยเจตนา — เพราะร้านที่หมดอายุแล้วจะถูกพาไปหน้าต่ออายุ ทุกบทบาท ถ้าปิดด้วยจะกลายเป็นทางตัน จ่ายเงินไม่ได้
ระบบจะให้ ตรงกับวันที่หน้าจอบอกไว้ก่อนกดจ่ายเสมอ ไม่ใช่นับจากวันที่โอนเงิน เช่นใบระบุว่าครอบคลุมถึง 30 ก.ย. ต่อให้จ่ายวันที่ 5 ก.ย. ก็ได้ถึง 30 ก.ย. ตามที่ใบเขียน (เป็นวิธีเดียวกับผู้ให้บริการรายเดือนทั่วไป — จ่ายค่ารอบนั้น ไม่ใช่เริ่มนับใหม่จากวันจ่าย)
⚠️ ก่อนหน้านี้บางเส้นทางให้วันไม่ตรงกับที่หน้าจอบอก เช่นซื้อ รายปี แล้วได้แค่ 1 เดือน หรือเปลี่ยนไปแพ็คเกจสูงกว่าแล้ว ไม่ได้วันเพิ่มเลย — แก้ครบทุกเส้นทางแล้ว
📍 หน้า: /branches
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: เพิ่ม แก้ไข จัดการสาขาของร้าน
เดิมสาขาที่สร้างผ่านหน้าจอ ลบถาวรไม่ได้เลยแม้แต่สาขาเดียว — แม้เพิ่งสร้างเมื่อกี้และยังไม่เคยใช้งาน เพราะระบบคัดลอกข้อมูลหลัก (ยี่ห้อ · รุ่น · สี ฯลฯ) และสร้าง "ลูกค้าทั่วไป" เข้าสาขาใหม่ให้ตั้งแต่วินาทีแรก ระบบจึงมองว่า "มีข้อมูลผูกอยู่" ทุกครั้ง ⇒ กดลบกี่ครั้งก็ได้แค่ปิดใช้งาน แล้วแถวค้างในตารางตลอดไป
ตอนนี้ระบบแยกให้แล้วว่าอะไรคือ "ของที่ระบบเตรียมให้" กับ "ข้อมูลที่ร้านทำเอง" ⇒ สาขาที่ยังไม่มีข้อมูลของร้านผูกอยู่เลย ลบออกได้จริง โดยข้อมูลหลักที่ระบบคัดลอกให้จะถูกลบตามไปด้วย
พอกดปุ่มลบ ระบบจะตรวจให้ก่อนเสมอ แล้วบอกในกล่องยืนยันว่าจะเกิดอะไรขึ้นจริง:
| กล่องยืนยันบอกว่า | กดยืนยันแล้วได้อะไร |
|---|---|
| "สาขานี้จะถูกลบถาวร — กู้คืนไม่ได้" พร้อมรายการข้อมูลหลักที่จะถูกลบตาม | แถวหายไปจริง |
| "ลบถาวรไม่ได้ — มีข้อมูลอ้างอิงอยู่ N รายการ (…)" | ปิดใช้งานให้แทน · ข้อมูลอยู่ครบ · แถวยังอยู่พร้อมป้าย "ปิดใช้งาน" |
| "ตรวจล่วงหน้าไม่สำเร็จ" (เน็ตมีปัญหา) | กดได้ ระบบจะตัดสินให้เองตามกติกาข้างบน |
สิ่งที่ทำให้ลบถาวรไม่ได้ (ต้องย้ายหรือลบออกจากสาขานั้นก่อน): สินค้า · ลูกค้าที่ร้านบันทึกเอง · งานซ่อม · การขาย · ใบคืนเงิน · ใบรับซื้อ · ผู้ใช้ที่สังกัดสาขานี้ · อะไหล่ · อุปกรณ์เสริม · ใบเบิกอะไหล่ · ประวัติสต๊อก · การโอนย้ายระหว่างสาขา · รอบนับสต๊อก · กะแคชเชียร์ · รายการเงินในลิ้นชัก · ใบแจ้งหนี้ · ค่าใช้จ่าย · เงินเดือน · การลงเวลา · ใบประกัน · ราคาซ่อมที่ร้านตั้งเอง · ตั้งค่าเฉพาะสาขา
📌 2 อย่างที่ไม่ขวางการลบ เพราะระบบเป็นคนสร้างให้เอง · ข้อมูลหลักที่คัดลอกมาตอนสร้างสาขา (ยี่ห้อ · รุ่น · สี · ความจุ · ประเภทซ่อม · วิธีชำระ · สถานะต่าง ๆ · หมวดอะไหล่ · ตำแหน่งจัดเก็บ · รายการเช็คสภาพ · เงื่อนไขท้ายเอกสาร) — ถูกลบตามไปกับสาขา · "ลูกค้าทั่วไป" ที่ระบบสร้างไว้ให้หน้าขายเลือก — ถูกลบตามไปด้วย ส่วนลูกค้าที่ร้านบันทึกเอง ยังขวางการลบตามปกติ
⚠️ สาขาที่เคยออกเอกสารไปแล้ว จะลบถาวรไม่ได้ตลอดไป แม้จะลบบิลทิ้งหมดแล้วก็ตาม — เพราะระบบเก็บ ตัวนับเลขเอกสาร ของสาขานั้นไว้ ถ้าลบทิ้งแล้วสร้างสาขาใหม่ด้วยรหัสเดิม เลขเอกสารจะเริ่มที่ 1 ใหม่ ซ้ำกับใบที่ลูกค้าถืออยู่ในมือ ⇒ กรณีนี้ให้ใช้ "ปิดใช้งาน" แทน
⚠️ ลบสาขาหลักไม่ได้ — ตั้งสาขาอื่นเป็นสาขาหลักก่อน · สาขาที่ปิดใช้งานจะไม่โผล่ในช่องเลือกสาขาและไม่รับข้อมูลใหม่ แต่ข้อมูลเก่ายังอยู่ครบ และ เปิดใช้งานกลับได้ที่หน้าแก้ไขสาขา · การลบถาวร กู้คืนไม่ได้ แต่ยังเหลือร่องรอยใน บันทึกการใช้งาน (§14.5) ว่าใครลบเมื่อไร พร้อมสำเนาข้อมูลสาขาที่หายไป
ขั้นตอนเพิ่มสาขาใหม่:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| ชื่อสาขา | ชื่อสาขา (เช่น HQ, สาขาลาดพร้าว) | ✅ |
| ที่อยู่ | ที่อยู่สาขา | ✅ |
| เบอร์โทร | เบอร์ติดต่อสาขา | ✅ |
| อีเมล | อีเมลสาขา | ❌ |
| เป็นสาขาหลัก | ตั้งเป็น HQ | ❌ |
ข้อมูลหลักของสาขาใหม่ — ระบบเตรียมให้อัตโนมัติ ⭐ NEW
พอกดบันทึก ระบบจะ คัดลอกข้อมูลหลักจากสาขาที่มีอยู่ มาให้สาขาใหม่ทันที (ยี่ห้อ · รุ่น · สี · ความจุ · ประเภทซ่อม · วิธีชำระเงิน · สถานะต่าง ๆ · หมวดอะไหล่ · ตำแหน่งจัดเก็บ · รายการเช็คสภาพเครื่อง · เงื่อนไขท้ายเอกสาร · ลูกค้าทั่วไป) แล้วแจ้งจำนวนรายการที่คัดลอกมาในข้อความยืนยัน
ปุ่ม "คัดลอกข้อมูลหลัก" (ไอคอนสีเขียวอมฟ้าที่การ์ดสาขา)
ใช้กับ สาขาที่สร้างไว้ก่อนหน้านี้แล้วข้อมูลหลักว่าง — กดครั้งเดียวระบบจะดึงข้อมูลจากสาขาอื่นมาเติมให้
💡 ทำไมต้องมี — ก่อนหน้านี้สาขาที่ 2 เป็นต้นไปเกิดมาพร้อมข้อมูลหลักว่างทั้งหมด ทำให้ทุก dropdown ในระบบไม่มีตัวเลือกให้เลือกตั้งแต่วันแรก ต้องนั่งพิมพ์ใหม่เองทีละตัว
⚠️ หมายเหตุ: จำนวนสาขาที่สร้างได้ขึ้นอยู่กับแพ็กเกจ Subscription
📍 หน้า: /users
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: เพิ่ม แก้ไข จัดการบัญชีผู้ใช้งานและกำหนด Role
ขั้นตอนเพิ่มผู้ใช้ใหม่:
| ฟิลด์ | คำอธิบาย | จำเป็น |
|---|---|---|
| อีเมล | อีเมลสำหรับ Login | ✅ |
| ชื่อ | ชื่อพนักงาน | ✅ |
| นามสกุล | นามสกุลพนักงาน | ✅ |
| เบอร์โทร | เบอร์ติดต่อ | ❌ |
| บทบาท | เลือกได้หลายบทบาทในคนเดียว | ✅ บังคับ |
| สาขา | สาขาที่พนักงานคนนี้สังกัด | ✅ บังคับ |
| รหัสผ่าน | รหัสผ่านเริ่มต้น | ✅ |
| อัตราค่าแรง/ชั่วโมง | สำหรับคำนวณเงินเดือน | ❌ |
เดิม 2 ช่องนี้เว้นว่างแล้วกดบันทึกผ่าน — ได้บัญชีที่ใช้งานจริงไม่ได้ โดยไม่มีอะไรเตือนสักคำ
| ถ้าเว้นว่าง | สิ่งที่เกิดกับบัญชีนั้น |
|---|---|
| ไม่เลือกสาขา | ทุกอย่างที่พนักงานคนนี้บันทึก (บิลขาย งานซ่อม ฯลฯ) ไม่ถูกนับเข้าสาขาไหนเลย และหายจากทุกหน้าจอที่กรองตามสาขา รวมถึงรายงานและยอดปิดวัน |
| ไม่เลือกบทบาท | เข้าสู่ระบบได้ แต่ เปิดเมนูใดไม่ได้เลยสักเมนู |
ตอนนี้ถ้าไม่เลือก จะกดบันทึกไม่ผ่าน — ระบบขึ้นข้อความสีแดงใต้ช่องที่ยังขาด บอกทีละช่องว่าต้องเติมอะไร
ร้านที่มีสาขาเดียว ไม่ต้องกดเลือกเอง — ระบบเติมสาขาให้อัตโนมัติ พร้อมข้อความใต้ช่องบอกว่าเลือกสาขาไหนให้ (ร้านที่ยังไม่มีสาขาเลย ระบบจะบอกให้ไปสร้างสาขาที่หน้า "สาขา" ก่อน)
⚠️ บัญชีเก่าที่ยังไม่มีสาขา — พอเปิดแก้ไข จะต้องเลือกสาขาก่อนจึงบันทึกได้
เป็นความตั้งใจ ไม่ใช่ข้อผิดพลาด · หน้าต่างแก้ไขจะขึ้นกล่องสีส้ม "บัญชีนี้ยังไม่สังกัดสาขา" อธิบายเหตุผลไว้ให้ บัญชีเดิมยังเข้าสู่ระบบและทำงานได้ตามปกติ ระบบไม่ได้ปิดกั้นอะไร — แต่ถ้าอยากให้รายการของเขา โผล่ในรายงานรายสาขา ให้เปิดแก้ไขแล้วเลือกสาขาให้เรียบร้อยสักครั้ง
การจัดการบทบาท:
เดิมสิทธิ์ของแต่ละบทบาทถูกกำหนดตายตัวเหมือนกันทุกร้าน — ร้านที่ทำงานไม่เหมือนคนอื่นจึงต้อง ยอมใช้ตามที่ระบบให้มา หรือไม่ก็ต้องเพิ่มบทบาทเกินจำเป็นให้พนักงาน (ซึ่งเปิดสิทธิ์กว้างกว่าที่ตั้งใจ)
ตอนนี้กำหนดได้ว่าแต่ละบทบาทในร้านคุณเข้าถึงอะไรได้บ้าง โดยไม่กระทบร้านอื่นในระบบ
| กลุ่มงานที่ปรับได้ (10 กลุ่ม) | ครอบอะไร |
|---|---|
| สิทธิ์เจ้าของร้าน | งานระดับเจ้าของร้าน |
| จัดการระบบร้าน (ผู้ดูแล) | สาขา · ผู้ใช้งาน · บันทึกการใช้งาน · หน้าตั้งค่าสิทธิ์นี้เอง |
| สิทธิ์ระดับผู้จัดการ | ดูแลสต็อกและงานระดับผู้จัดการ |
| งานแคชเชียร์ (รับเงิน) | รับชำระเงิน |
| งานขาย | หน้าขาย · กะการขาย · ลิ้นชักเงินสด |
| งานซ่อม | งานช่าง · คลังอะไหล่ · เช็คสภาพเครื่อง |
| รายงาน | เมนูรายงาน |
| เงินเดือน | เมนูเงินเดือน |
| ตั้งค่าร้าน | เมนูตั้งค่า |
| สลับสาขาที่ทำงานอยู่ ⭐ ใหม่ | ช่องเลือกสาขาบนแถบหัว (ดูหัวข้อถัดไป) |
ตัวอย่างที่ใช้จริง — ร้านที่แคชเชียร์ต้องช่วยรับงานซ่อมด้วย: เปิด งานซ่อม ให้บทบาทแคชเชียร์ แล้วเมนูงานช่างกับคลังอะไหล่จะขึ้นให้แคชเชียร์ของร้านนั้น โดยร้านอื่นไม่เปลี่ยนอะไรเลย
⭐ ตั้งเองได้จากหน้าจอแล้ว (20 ส.ค. 2569) — ดูวิธีที่หัวข้อ "หน้าจอตั้งค่าสิทธิ์" ถัดไป
ร้านที่ยังไม่ได้เข้าไปแตะ ไม่ต้องทำอะไร — ใช้สิทธิ์ชุดเดิมทุกอย่างตาม §1.4 ไม่มีพนักงานคนไหนได้สิทธิ์เพิ่มหรือถูกถอดสิทธิ์จากการเปลี่ยนแปลงครั้งนี้
💡 ปรับแล้วพนักงานเห็นผลเมื่อไร — ตอนเปิดแอปครั้งถัดไป ระบบจะถามสิทธิ์ล่าสุดให้เอง ไม่ต้องสั่งให้พนักงานออกจากระบบแล้วเข้าใหม่ (ถ้าเขากำลังเปิดหน้าค้างอยู่ ให้รีเฟรชหน้า 1 ครั้ง)
⚠️ การปรับสิทธิ์เป็นคนละเรื่องกับ สาขา ที่พนักงานสังกัด — สิทธิ์บอกว่า "ทำอะไรได้" ส่วนสาขาบอกว่า "รายการที่บันทึกจะเข้าสาขาไหน" ต้องตั้งให้ถูกทั้งคู่
📍 หน้า: ตั้งค่า → การ์ด "สิทธิ์ตามบทบาท" (หรือเข้าตรงที่ /settings/permissions)
👤 สิทธิ์: เจ้าของร้าน · ผู้ดูแลระบบ
หน้าจอเป็นตาราง 11 กลุ่มงาน × 6 บทบาท ติ๊กเปิด/ปิดได้ทุกช่อง (บนมือถือเป็นการ์ดทีละกลุ่มงาน)
⭐ กลุ่มงานใหม่: "ใบแจ้งหนี้ B2B" (24 ส.ค. 2569) — ร้านที่อยากให้ผู้จัดการ ออกใบแจ้งหนี้ได้เอง ติ๊กช่องนี้ให้บทบาท "ผู้จัดการ" ได้เลย
🔒 เปิดแล้วผู้จัดการทำได้แค่งานเอกสาร — ดูรายการ · สร้างใบ · แก้ใบร่าง · ออกใบ · ดาวน์โหลด PDF · ส่วนงานเงิน (บันทึกรับชำระ · คืนเงิน · ลบใบ) ยังเป็นเจ้าของร้าน/ผู้ดูแลเท่านั้น และติ๊กเปิดให้ไม่ได้ เพราะการบันทึกว่า เงินเข้าแล้ว/คืนไปแล้ว ย้อนกลับยากและกระทบยอดบัญชีโดยตรง
ร้านที่ไม่ได้เข้ามาติ๊ก ไม่มีอะไรเปลี่ยน — ค่าตั้งต้นยังเป็นเจ้าของร้าน+ผู้ดูแล เหมือนเดิมทุกประการ
| สิ่งที่เห็นบนจอ | ความหมาย |
|---|---|
| ช่องพื้นขาว | ค่าจากระบบ — สิทธิ์มาตรฐานที่ทุกร้านได้เหมือนกัน |
| ช่องพื้นฟ้า | ร้านคุณปรับเอง — ต่างจากค่าระบบ |
| ป้ายมุมขวาบน | นับให้ว่าปรับเองไปกี่ช่องจากทั้งหมด 60 ช่อง |
| ปุ่มลูกศรหมุนท้ายแถว | คืนค่าตั้งต้นเฉพาะแถวนั้น |
ขั้นตอน:
⚠️ ดูกล่องส้มให้ดีก่อนกดยืนยัน — การถอนสิทธิ์มีผลกับ พนักงานทุกคนที่ถือบทบาทนั้น และเขาจะกดใช้งานส่วนนั้นไม่ได้ทันทีที่เปิดแอปครั้งถัดไป
🔒 ระบบไม่ยอมให้คุณล็อกตัวเองออก — ถ้าตั้งค่าจนไม่เหลือใครมีสิทธิ์ "จัดการระบบร้าน (ผู้ดูแล)" หรือการตั้งค่านั้นจะถอดสิทธิ์ผู้ดูแลออกจากบัญชีของคุณเอง ปุ่มบันทึกจะถูกปิด พร้อมข้อความสีแดงอธิบายเหตุผลอยู่เหนือปุ่ม — เพราะถ้าบันทึกไปแล้ว จะไม่มีใครกลับมาแก้หน้านี้ได้อีกเลย
ช่องเลือกสาขาบนแถบหัว เดิมทุกบทบาทเปลี่ยนได้ — พนักงานที่เผลอเลือกสาขาอื่นค้างไว้ จะบันทึกงานเข้าสาขานั้นโดยไม่รู้ตัว (เกิดขึ้นจริงมาแล้ว)
ตอนนี้ปิดสิทธิ์ "สลับสาขาที่ทำงานอยู่" ของบทบาทไหนก็ได้จากหน้าตั้งค่าสิทธิ์
คนที่ถูกปิด จะเห็นอะไร:
⚠️ ค่าเริ่มต้นคือ "ทุกบทบาทสลับได้" เหมือนเดิม — ร้านที่ไม่ได้เข้าไปปิด ไม่มีอะไรเปลี่ยน
💡 ก่อนปิดสิทธิ์นี้ ให้ตรวจว่าพนักงานทุกคน มีสาขาตั้งต้นครบแล้ว (ช่อง "สาขา" ในหน้าผู้ใช้งาน) คนที่ยังไม่มีสาขา ระบบจะไม่ดึงกลับไปไหน เพราะไม่รู้ว่าบ้านของเขาคือสาขาอะไร
ในหน้าต่างเพิ่ม/แก้ไขผู้ใช้ มีกล่อง "คัดลอกสิทธิ์จากพนักงานคนอื่น" — เลือกชื่อคนที่ทำงานตำแหน่งเดียวกัน แล้วระบบเติมช่อง "บทบาท" ให้ ไม่ต้องนั่งจำว่าคนนั้นถือบทบาทอะไรบ้าง
| กติกา | เหตุผล |
|---|---|
| เห็นก่อนว่าจะได้บทบาทอะไร (โหมดแก้ไขแสดง "ก่อน → หลัง") | กันเผลอเปลี่ยนสิทธิ์คนที่ทำงานอยู่ |
| สาขาไม่คัดลอกให้อัตโนมัติ — มีช่องติ๊กแยก | คนละสาขากันเป็นเรื่องปกติ · สาขาผิด = รายการหายจากรายงาน |
| คัดลอกบทบาทที่สูงกว่าสิทธิ์ของคุณเองไม่ได้ | เช่นผู้ดูแลระบบคัดลอกจากเจ้าของร้านไม่ได้ ระบบบอกเหตุผลไว้บนจอ |
| เตือนสีแดงเมื่อกำลังจะให้สิทธิ์ระดับสูง (เจ้าของ/ผู้ดูแล) | บัญชีระดับนั้นแก้สิทธิ์คนอื่นได้ทั้งร้าน |
| แตะเฉพาะบทบาท — ไม่แตะอีเมล รหัสผ่าน QR เงินเดือน | คัดลอกสิทธิ์ ไม่ใช่ทำสำเนาพนักงาน |
| คัดลอกครั้งเดียว ไม่ผูกกัน | แก้สิทธิ์ของต้นทางทีหลัง จะไม่ตามมาถึงคนนี้ |
💡 ยังต้องกด "บันทึก" เอง — การคัดลอกแค่เติมช่องให้ ตรวจอีกครั้งแล้วค่อยบันทึก และระบบบันทึกไว้ใน บันทึกการใช้งาน (Audit Log) ด้วยว่าสิทธิ์ชุดนี้ลอกมาจากใคร
QR Code พนักงาน:
เปิด/ปิดบัญชี:
📍 หน้า: /masters
👤 สิทธิ์: OWNER, ADMIN, MANAGER
วัตถุประสงค์: จัดการข้อมูลอ้างอิงที่ใช้ทั่วทั้งระบบ เช่น ยี่ห้อ รุ่น สี ประเภทการซ่อม ฯลฯ
รายการ Master Data:
| หัวข้อ | URL | คำอธิบาย |
|---|---|---|
| ยี่ห้อสินค้า | /masters/brands | Apple, Samsung, OPPO ฯลฯ |
| รุ่นสินค้า | /masters/models | iPhone 15, Galaxy S24 ฯลฯ |
| สี | /masters/colors | ดำ, ขาว, ทอง ฯลฯ (พร้อม Color Picker) |
| ความจุ | /masters/storages | 64GB, 128GB, 256GB, 512GB ฯลฯ |
| ตำแหน่งจัดเก็บ | /masters/storage-locations | Shelf A1, ตู้ B ฯลฯ |
| หมวดหมู่อะไหล่ | /masters/spare-part-categories | จอ, แบตเตอรี่, ชาร์จพอร์ต ฯลฯ |
| ประเภทการซ่อม | /masters/repair-types | เปลี่ยนจอ, เปลี่ยนแบต, ซ่อมบอร์ด ฯลฯ |
| สถานะการซ่อม | /masters/repair-statuses | RECEIVED, IN_PROGRESS, COMPLETED ฯลฯ |
| สภาพสินค้า | /masters/product-conditions | NEW, LIKE_NEW, เกรด A, B, C, D (ตำหนิเยอะ ราคาถูก) |
| สถานะสินค้า | /masters/product-statuses | IN_STOCK, RESERVED, SOLD |
| สถานะเงินเดือน | /masters/payroll-statuses | PENDING, APPROVED, PAID |
| สถานะประกัน | /masters/warranty-statuses | ACTIVE, EXPIRED, CLAIMED |
| เงื่อนไขเอกสาร ⭐ | /masters/document-terms | ข้อความท้ายใบรับซ่อม/ใบเสนอราคา/ใบเสร็จ/ใบประกัน/ใบรับซื้อ — แก้เองได้ (ดู §12.0A) · เฉพาะ OWNER/ADMIN |
ขั้นตอนเพิ่ม Master Data:
⚠️ หมายเหตุ: ข้อมูลหลักเป็น Tenant-specific — แต่ละร้านมีรายการของตัวเอง ไม่แชร์กับร้านอื่น
📍 หน้า: /settings
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: ตั้งค่าข้อมูลร้านค้า, เป้าหมายยอดขาย, PromptPay, VAT
ส่วนที่ตั้งค่าได้:
| ส่วน | ฟิลด์ |
|---|---|
| ข้อมูลร้าน | ชื่อร้าน, ที่อยู่, เบอร์โทร, อีเมล, Logo |
| ภาษี | จด VAT หรือไม่ (Toggle), อัตรา VAT (ค่าเริ่มต้น 7%) |
| PromptPay | เบอร์โทร PromptPay สำหรับสร้าง QR |
| เลขประจำตัวผู้เสียภาษี | Tax ID |
| เป้าหมาย | เป้าหมายยอดขายต่อเดือน (บาท) |
| เป้าหมายซ่อม | เป้าหมายจำนวนงานซ่อมต่อเดือน |
💡 เคล็ดลับ: ตั้งค่า PromptPay Phone ก่อนเริ่มขาย เพื่อให้ระบบสร้าง QR Code ได้อัตโนมัติ
การ์ด "สิทธิ์ตามบทบาท" ⭐ ใหม่ 20 ส.ค. 2569 — อยู่บนสุดของหน้านี้ กดเข้าไปตั้งได้ว่า แต่ละบทบาทในร้านคุณเข้าถึงอะไรได้บ้าง (รายละเอียดที่ §14.2)
⚠️ การ์ดนี้ขึ้นเฉพาะ เจ้าของร้าน / ผู้ดูแลระบบ — ร้านที่เปิดหน้าตั้งค่าให้ผู้จัดการด้วย ผู้จัดการจะไม่เห็นการ์ดนี้ (จงใจ — กันเห็นปุ่มแล้วกดไม่ได้)
⭐ 8 ก.ย. 2569 — เวลาในกล่อง "ข้อมูลเก่า / ข้อมูลใหม่" อ่านเป็นเวลาไทยแล้ว
อาการเดิม — กดดูรายละเอียดรายการหนึ่ง หัวโมดัลขึ้น "7 ก.ย. 2569 17:36" (เวลาไทย)
แต่ในกล่องข้างล่างขึ้น "endDate": "2026-10-07T10:36:00.279Z" ซึ่งเป็นเวลาสากล ช้ากว่าไทย 7 ชั่วโมง
⇒ ร้านลบ 7 ชั่วโมงเองทุกครั้ง และเคยแจ้งบั๊กที่ไม่มีจริงเข้ามาเพราะเรื่องนี้
🔴 และบางค่าไม่มีทางตรงกับเวลาข้างบนอยู่แล้ว — เช่น endDate (วันหมดประกัน) ·
dueDate (วันครบกำหนด) · openedAt (เวลาเปิดกะ) เพราะมันคือ ข้อมูลของรายการนั้น
ไม่ใช่ เวลาที่เกิดเหตุการณ์ (ตัวอย่างจริง: กล่องบอก 7 ต.ค. หัวโมดัลบอก 7 ก.ย. — ห่างกัน 1 เดือน)
ตอนนี้ กล่องแสดงเป็น "endDate": "7 ต.ค. 2569 17:36 น." รูปแบบเดียวกับเวลาข้างบนเป๊ะ
⇒ เทียบกันได้ตรง ๆ ไม่ต้องคำนวณในหัว
⚠️ ข้อมูลในระบบไม่ถูกแก้แม้แต่แถวเดียว — เปลี่ยนเฉพาะวิธีแสดงผลบนจอ · ต้องการค่าดิบเพื่อเทียบกับ log ดูได้จาก Record ID ในโมดัลเดียวกัน · หัวโมดัล คอลัมน์วันที่/เวลา ตัวกรอง และการแบ่งหน้า ไม่เปลี่ยนเลย
📍 หน้า: /audit-logs
👤 สิทธิ์: OWNER, ADMIN
วัตถุประสงค์: ดูบันทึกกิจกรรมทั้งหมดในระบบ — ใครทำอะไร เมื่อไหร่
🔴 แก้แล้ว: เดิมหน้านี้ดูได้แค่ 25 รายการล่าสุด (24 ส.ค. 2569 — ร้านแจ้งเข้ามา) อาการที่เจอ: ปุ่มเลขหน้าขึ้นบนจอ แต่กดแล้วไม่มีอะไรเกิดขึ้น · ตั้งช่อง "ต่อหน้า" เป็น 100 แล้วก็ยังได้ 25 รายการเท่าเดิม · ตัวเลขท้ายตารางขึ้นว่า "1-25 / 25" ซึ่งอ่านได้ว่า "ร้านมีบันทึกอยู่แค่ 25 รายการ" ทั้งที่ของจริงมีหลายพัน · ตอนนี้: กดเลขหน้าได้จริง · เลือก 10/25/50/100 ต่อหน้าได้ · ตัวเลขท้ายตาราง บอกจำนวนทั้งหมดจริง และเปลี่ยนตัวกรองแล้วเด้งกลับหน้า 1 ให้เอง (ไม่งั้นจะค้างอยู่หน้าเดิมแล้วเห็นตารางว่าง ซึ่งอ่านผิดว่า "ไม่มีข้อมูล")
⭐ ใหม่ 27 ส.ค. 2569 — การส่งออก Excel ถูกบันทึกแล้ว (ประเภท "ส่งออก")
เดิม การโหลดไฟล์ Excel ข้อมูลลูกค้า / ยอดขาย / ผลนับสต๊อก ไม่ถูกบันทึกที่ไหนเลย ⇒ ตัวเลือก "ส่งออก" ในช่องกรองจึงไม่เคยโผล่ ซึ่งอ่านได้ว่า "ไม่เคยมีใครส่งออกข้อมูลเลย"
ตอนนี้ทุกครั้งที่กดปุ่ม Excel ที่ รายงาน · ยอดรับเงินวันนี้ · ผลการนับสต๊อก ระบบจะบันทึกว่า ใครกด · เมื่อไร · รายงานอะไร · กี่แถว · ช่วงวันที่ไหน · สาขาไหน
🔴 บันทึกนี้บอกอะไรได้และบอกไม่ได้ — อ่านให้ครบก่อนใช้อ้างอิง บอกได้: ใครกดปุ่มส่งออกบนหน้าจอ และส่งออกอะไรไป บอกไม่ได้: "ข้อมูลออกจากระบบทางไหนบ้าง" — เพราะไฟล์ถูกสร้างในเบราว์เซอร์ แล้วหน้าจอเป็นฝ่ายแจ้งเซิร์ฟเวอร์ ⇒ คนที่ดึงข้อมูลด้วยวิธีอื่นแล้วทำไฟล์เอง จะไม่ปรากฏในบันทึกนี้ ⇒ ใช้เป็น หลักฐานว่าใครทำอะไรบนระบบ ได้ · ใช้เป็น หลักประกันว่าข้อมูลไม่รั่ว ไม่ได้ 💡 ระบบไม่ได้เก็บ เนื้อข้อมูล ที่ส่งออกไว้ในบันทึก — เก็บแค่ว่าส่งออกอะไรไปเท่าไร (ถ้าเก็บเนื้อไว้ด้วย ตารางที่มีไว้ตรวจสอบจะกลายเป็นสำเนาข้อมูลลูกค้าอีกชุด)
✅ อัปเดตวันเดียวกัน — ตอนนี้ไฟล์ถูกสร้างที่เซิร์ฟเวอร์แล้ว บันทึกจึงเชื่อถือได้เต็มที่ ข้อจำกัดข้างบน ("หน้าจอเป็นคนบอกเซิร์ฟเวอร์") หมดไปแล้ว — เซิร์ฟเวอร์เป็นคนสร้างไฟล์เอง จึงรู้ทุกครั้งที่มีการส่งออกจริง ไม่ต้องรอให้เบราว์เซอร์รายงานตัว
ข้อมูลที่บันทึก:
| ฟิลด์ | ตัวอย่าง |
|---|---|
| ผู้กระทำ | admin@shop.com |
| การกระทำ | CREATE_PRODUCT, UPDATE_REPAIR, DELETE_USER |
| โมดูล | Product, Repair, User, Sale |
| รายละเอียด | ข้อมูลก่อน-หลังการเปลี่ยนแปลง |
| เวลา | วัน-เวลาตาม Timezone Asia/Bangkok |
| IP Address | IP ของผู้ใช้ |
⭐ การเปิดร้านมีบันทึกในประเภท "ข้อมูลร้าน" แล้ว — เดิมเหตุการณ์แรกสุดของร้าน (วันที่เปิดใช้งาน · แพ็คเกจที่เลือก · ทดลองใช้ถึงวันไหน) ถูกบันทึกไว้ในประเภท "ผู้ใช้งาน" อย่างเดียว ⇒ กรองด้วยประเภท "ข้อมูลร้าน" แล้วได้ผลว่างเปล่า ซึ่งอ่านได้ว่า "ไม่เคยมีอะไรเกิดขึ้นกับร้านนี้"
⏳ ระบบเก็บบันทึกย้อนหลัง 365 วัน แล้วลบรายการที่เก่ากว่านั้นให้อัตโนมัติ (เริ่ม 19 ส.ค. 2569) เดิม ไม่มีการลบเลย บันทึกสะสมไปเรื่อย ๆ จนหน้านี้ช้าลงเมื่อข้อมูลเยอะ · ระบบล้างให้เองทุกวันตอนตี 3 — ร้านไม่ต้องกดอะไร · ทำไมต้อง 365 วัน: มาตรฐานสากล (PCI DSS) กำหนด 12 เดือน และสูงกว่าขั้นต่ำ ตามกฎหมายไทยเกือบ 4 เท่า (พ.ร.บ.คอมพิวเตอร์ ม.26 กำหนดไม่น้อยกว่า 90 วัน) · 🔒 ตั้งให้เก็บสั้นกว่า 90 วันไม่ได้ — เป็นขั้นต่ำตามกฎหมาย ระบบจะปฏิเสธ · 📌 ถ้าต้องใช้บันทึกเป็นหลักฐานย้อนหลังเกิน 1 ปี (เช่นข้อพิพาทเก่า) กรุณาส่งออกเก็บไว้เองก่อนครบกำหนด หรือแจ้งผู้ให้บริการล่วงหน้า
การใช้งาน:
เวลาทีมงานผู้ให้บริการต้องเข้ามาดูหน้าจอของร้านเพื่อช่วยแก้ปัญหา ระบบจะให้ทีมงานเข้าในนามผู้ใช้ของร้าน เดิมรายการที่ทีมงานทำจะขึ้นเป็นชื่อพนักงานคนนั้นในหน้านี้ ทำให้เจ้าของร้านเข้าใจผิดว่าพนักงานเป็นคนทำ
ตอนนี้แยกออกจากกันชัดเจนแล้ว:
| จุดที่เห็น | แสดงอะไร |
|---|---|
| แถบด้านบนของหน้า | เตือนเป็นสีส้มเมื่อช่วงเวลาที่กำลังดูมีรายการของทีมงานอยู่ |
| ป้ายในแถว | ป้ายส้ม "ทีมงานผู้ให้บริการ" พร้อมบรรทัด "ไม่ใช่พนักงานร้าน · เข้าใช้งานในนาม …" |
| หน้าต่างรายละเอียด | กล่องส้มระบุชื่อผู้ดูแลที่เข้ามาและรหัสอ้างอิงของการเข้าถึงครั้งนั้น |
| ตัวกรอง "ผู้ทำรายการ" | เลือกดูเฉพาะ พนักงานของร้าน หรือเฉพาะ ทีมงานผู้ให้บริการ ได้ |
ข้อควรทราบ — ป้ายนี้จะขึ้นเฉพาะรายการที่เกิดตั้งแต่วันที่ติดตั้งฟีเจอร์นี้เป็นต้นไป รายการเก่ากว่านั้นระบบย้อนไปตรวจสอบไม่ได้ จึงไม่มีป้าย
รายการของพนักงานร้านตามปกติ ไม่มีป้ายนี้ — ถ้าเห็นทุกแถวมีป้าย แปลว่าผิดปกติ ให้แจ้งผู้ให้บริการ
เดิมมีหลายอย่างที่ทำไปแล้ว ไม่เหลือร่องรอยในหน้านี้เลย ตอนนี้บันทึกครบแล้ว สิ่งที่ร้านจะเริ่มเห็นในหน้านี้ (ที่เมื่อก่อนไม่เคยมี):
| กลุ่ม | ตัวอย่างที่เริ่มบันทึกแล้ว |
|---|---|
| เงิน | จ่ายเงินเดือน · อนุมัติ/เพิ่ม/ลบรายการหักเงินเดือน · พักบิลและลบบิลพัก |
| คลัง | ปรับยอดอุปกรณ์เสริมด้วยมือ · เบิกอะไหล่เข้างานซ่อม · ยกเลิกใบโอนสาขา · ยกเลิกใบสั่งซื้อ · แก้/ยิงนับรอบนับสต๊อก |
| สิทธิ์ | เปลี่ยนสิทธิ์ผู้ใช้ (เห็นชุดสิทธิ์เดิม → ชุดใหม่เป็นชื่อไทย) · เพิ่ม/ลบ/ปิดใช้งานผู้ใช้ · รีเซ็ตและเปลี่ยนรหัสผ่าน |
| ค่าตั้งค่า | แก้ VAT และข้อมูลที่พิมพ์บนเอกสาร · สร้าง/แก้/ปิดสาขา · เปลี่ยนสาขาหลัก · คัดลอกข้อมูลหลักไปสาขาอื่น · สร้าง/แก้/ลบตารางสำรองข้อมูล |
| งานซ่อม-ประกัน | ออกและลบเอกสารทุกชนิด · เพิ่ม/แก้/ลบอะไหล่ในใบซ่อม · มอบหมายช่าง · รับ/อนุมัติ/ปฏิเสธ/ปิดเคลมประกัน · แก้รายการเช็คลิสต์ |
| ลงเวลา | เข้า-ออกงาน · สแกน QR (บันทึกว่าใครเป็นคนสแกน และใช่ตัวเองหรือไม่) · แก้เวลาย้อนหลัง |
| ไฟล์และบัญชีร้าน | อัปโหลด/ลบไฟล์แนบ · ต่ออายุและเปลี่ยนแพ็คเกจ · แจ้งชำระเงิน · สร้าง/เพิกถอนกุญแจ API · แก้ข้อมูลร้าน |
| บันทึกเอง | การล้างบันทึกเก่าออกจากหน้านี้ ก็ถูกบันทึกไว้ด้วยแล้ว (ใครสั่ง ลบไปกี่แถว ถึงวันไหน) |
ตัวกรองบอกความจริงแล้ว — เดิมช่อง "ประเภทข้อมูล" กับ "การกระทำ" มีตัวเลือกที่กดแล้วไม่มีอะไรเลยเสมอ (เช่น "ส่งออกข้อมูล" ซึ่งอ่านได้ว่า "ไม่เคยมีใครส่งออกข้อมูลลูกค้า" ทั้งที่ความจริงคือ ระบบไม่เคยบันทึกเรื่องนี้) ตอนนี้ ตัวเลือกสร้างจากข้อมูลจริงของร้านคุณ ⇒ ทุกตัวเลือกที่เห็น กดแล้วมีข้อมูลเสมอ · และเพิ่มชื่อไทยของตารางอีก 43 รายการ ⇒ แถวที่เคยขึ้นเป็นชื่ออังกฤษและกรองไม่ได้ ตอนนี้อ่านออกและกรองได้ทั้งหมด
ข้อมูลอ่อนไหวถูกปิดบังแล้ว — เลขบัตรประชาชน · รหัสผ่าน · OTP · โทเค็น · กุญแจ API จะไม่ถูกเก็บลงบันทึกอีก รวมถึงกรณีที่ค่านั้นซ่อนอยู่ข้างในข้อมูลชั้นลึก ซึ่งเดิมหลุดออกมาได้ · เลขผู้เสียภาษี ของร้านเอง ยังเก็บไว้ตามเดิม เพราะเป็นหลักฐานว่าใครแก้เลขบนเอกสาร · ⚠️ แถวเก่าที่บันทึกไว้ก่อนหน้านี้ยังคงอยู่เหมือนเดิม — กติกาใหม่มีผลกับรายการที่เกิดตั้งแต่วันนี้เป็นต้นไป
📍 หน้า: /line-oa (เมนู LINE OA — เป็นหน้าของตัวเอง ไม่ได้อยู่ใน "ตั้งค่า")
👤 สิทธิ์: เจ้าของร้าน / แอดมิน
💳 แพ็คเกจ: เอ็นเตอร์ไพรส์ เท่านั้น (ร้านช่วงทดลองใช้ได้ครบ)
วัตถุประสงค์: ผูก LINE Official Account ของร้านเข้ากับระบบ เพื่อให้ต่อไปแจ้งสถานะงานซ่อมและส่งเอกสารหาลูกค้าทาง LINE ได้จากในระบบ แทนการพิมพ์ส่งเองทีละคน
🔴 ต้องตั้งค่าหน้านี้ให้เสร็จก่อน การแจ้งสถานะอัตโนมัติ (§14.6B) จึงจะทำงาน — เดิมหน้านี้ทำเฉพาะ "หน้าตั้งค่า + รับข้อความเข้า"** — ยังไม่มีหน้าแชทและยังไม่แจ้งเตือนอัตโนมัติ การกรอกค่าตอนนี้คือการเตรียมช่องทางไว้ให้พร้อม
| ค่าที่ต้องกรอก | ไปเอาจากไหน |
|---|---|
| Channel ID | แท็บ Basic settings → หัวข้อ Channel ID |
| Channel Secret | แท็บ Basic settings → หัวข้อ Channel secret |
| Channel Access Token | แท็บ Messaging API → Channel access token (long-lived) |
Basic ID (@xxxxx) | หน้า LINE OA Manager — ใช้ประกอบลิงก์เพิ่มเพื่อน |
| ชื่อบัญชี | ชื่อที่ร้านตั้งเองไว้ดูในหน้านี้ ไม่ต้องตรงกับชื่อ OA จริง |
🔴 Webhook URL ต้องคัดลอกจากหน้านี้เท่านั้น ห้ามพิมพ์เอง — ระบบเป็นคนประกอบให้และมีรหัสประจำร้านอยู่ในนั้น
| ผลที่ขึ้น | แปลว่า | ต้องทำอะไร |
|---|---|---|
| สำเร็จ | ค่าถูกต้องทั้งชุด | เสร็จแล้ว — ระบบเติมชื่อ OA และ Basic ID ให้เอง |
| ยังไม่ได้ตั้งค่า | ยังไม่เคยบันทึก | กรอกแล้วบันทึกก่อน |
| โทเคนไม่ถูกต้องหรือหมดอายุ | Access Token ใช้ไม่ได้แล้ว | ไปออกใหม่ที่ Console แล้วบันทึกทับ |
| โทเคนเป็นของ Channel อื่น | โทเคนใช้ได้ แต่คนละ channel กับ Channel ID ที่กรอก | ตรวจว่าคัดลอกมาจาก channel เดียวกัน |
| ติดต่อ LINE ไม่ได้ | เน็ตหรือ LINE ขัดข้องชั่วคราว | ไม่ใช่ความผิดของค่าที่กรอก — รอแล้วลองใหม่ |
ℹ️ ตั้งแต่ 2 ก.ย. 2569 ถ้าผลไม่ผ่านเพราะ LINE ตอบกลับมา ข้อความจะต่อท้ายด้วยสิ่งที่ LINE ตอบจริง
(เช่น LINE ตอบ HTTP 400: …) — ถ้าแก้ตามตารางแล้วยังไม่ผ่าน ให้ส่งข้อความบรรทัดนั้นให้ทีมงานทั้งบรรทัด
· อย่ากด Reissue โทเคนซ้ำเพื่อลองใหม่ — LINE ทำให้โทเคนเก่าใช้ไม่ได้ทันทีที่ออกใหม่ ต้องนำโทเคนใหม่มาบันทึกทับทุกครั้ง
หน้านี้ ยังเปิดดูได้และยังเห็นค่าที่เคยตั้งไว้ (แบบปิดบัง) — จงใจไม่ซ่อน เพื่อให้รู้ว่ามีของให้เลือกซื้อ
| ทำได้ | ทำไม่ได้ |
|---|---|
| ดูค่าที่ตั้งไว้ · ปิดใช้งานการเชื่อมต่อ · ลบการเชื่อมต่อ | แก้ค่า · เปิดใช้งาน · ทดสอบการเชื่อมต่อ |
🔴 ป้ายสถานะจะขึ้นว่า "หยุดส่งข้อความ (แพ็คเกจไม่รองรับ)" สีส้ม ไม่ใช่ "พร้อมใช้งาน" เพราะระบบ หยุดส่งข้อความหาลูกค้าทั้งหมด ในสภาพนั้น · ข้อความที่ลูกค้าทักเข้ามา ยังถูกเก็บไว้ให้ · ปุ่มปิดใช้งานและปุ่มลบเปิดไว้เสมอ เพื่อให้ร้านถอด Webhook ของตัวเองออกจาก LINE Console ได้ ไม่ใช่ค้างผูกไว้ตลอดกาลแล้วแก้เองไม่ได้
⭐ ร้านช่วงทดลองใช้ จะเห็นแถบเตือนว่าเปิดได้เพราะอยู่ในช่วงทดลอง — เป็นการบอก ไม่ใช่การห้าม ปุ่มยังกดได้ปกติ
💳 แพ็คเกจ: เอ็นเตอร์ไพรส์ (ต่อจาก §14.6) · 👤 ไม่ต้องตั้งค่าเพิ่ม ทำงานเองอัตโนมัติ
เมื่อร้านเชื่อม LINE OA เรียบร้อยแล้ว (§14.6) ระบบจะ ส่งการ์ดแจ้งสถานะให้ลูกค้าเองทุกครั้งที่งานซ่อมเปลี่ยนสถานะ โดยร้านไม่ต้องกดอะไร
| เงื่อนไข | ถ้าไม่ครบจะเป็นยังไง |
|---|---|
| ร้านเชื่อม LINE OA แล้วและเปิดสวิตช์อยู่ | ไม่ส่ง และไม่มีอะไรค้างในระบบ |
| แพ็คเกจเป็นเอ็นเตอร์ไพรส์ | ไม่ส่ง แต่ระบบจดไว้ว่าส่งไม่ได้เพราะแพ็คเกจ |
| ลูกค้าคนนั้นผูกบัญชี LINE กับร้านแล้ว | ไม่ส่ง (เงียบ ไม่ใช่ข้อผิดพลาด) |
| ลูกค้าไม่ใช่ "ลูกค้าทั่วไป" | ไม่ส่ง |
🔴 การส่งไม่สำเร็จจะไม่ทำให้การเปลี่ยนสถานะล้มเหลว — งานซ่อมบันทึกสำเร็จเสมอ ไม่ว่าไลน์จะส่งได้หรือไม่
| สถานะ | ทำไมถึงแจ้ง |
|---|---|
| เสนอราคาแล้ว | ลูกค้าต้องตัดสินใจ — เป็นเหตุผลเดียวที่งานค้างอยู่ |
| รออะไหล่ | ช้ากว่าที่นัด ลูกค้าต้องรู้ ไม่งั้นมาถึงร้านแล้วเก้อ |
| ซ่อมเสร็จ | มารับเครื่องได้แล้ว |
| ยกเลิก | งานจบแบบไม่ได้ซ่อม |
ที่จงใจไม่แจ้ง — ส่งมอบแล้ว (ลูกค้ายืนรับเครื่องอยู่ตรงนั้นแล้ว) · ลูกค้าอนุมัติ (เขาเป็นคนอนุมัติเอง) · รอดำเนินการ (ลูกค้าอยู่ที่ร้านตอนนั้น) · กำลังซ่อม (ลูกค้าทำอะไรไม่ได้ และเปลืองโควตาข้อความเพิ่มเกือบครึ่ง)
⚠️ ทุกข้อความที่ส่งออกใช้โควตาแบบเสียเงินของ LINE OA ระบบจึงเลือกส่งเฉพาะเรื่องที่ลูกค้าต้องลงมือทำอะไรหรือแผนของเขาเปลี่ยน
เป็นการ์ดสีที่แถบหัวเปลี่ยนตามสถานะ (ซ่อมเสร็จ = เขียว · เสนอราคา = ฟ้า · รออะไหล่ = ส้ม · ยกเลิก = เทา) ข้างในมี ชื่อร้าน · ชื่อสถานะ · เลขที่งาน · รุ่นเครื่อง และปุ่ม ดูรายละเอียดงานซ่อม ที่พาไปหน้าติดตาม (§5.7)
🔴 ระบบไม่ส่งอาการที่แจ้ง รหัสปลดล็อกเครื่อง ราคา หรือเบอร์ลูกค้า ออกไปทางไลน์เด็ดขาด — แม้แต่ในข้อความตัวอย่างที่โผล่บนแถบแจ้งเตือนมือถือ
⚠️ แถวที่แจ้งไม่สำเร็จจะถูกจดเหตุผลไว้ เช่นลิงก์หน้าติดตามยังไม่พร้อม (ระบบจะตัดปุ่มออกแทนที่จะใส่ปุ่มที่กดแล้วไปไหนไม่ได้)
📍 หน้า: /line-chat (เมนู แชท LINE) · 👤 สิทธิ์: เจ้าของร้าน / แอดมิน · 💳 แพ็คเกจ: เอ็นเตอร์ไพรส์
อ่านและตอบข้อความที่ลูกค้าทักเข้ามาทาง LINE OA ของร้าน จากในระบบได้เลย ไม่ต้องสลับไปแอป LINE OA
| ส่วน | ทำอะไร |
|---|---|
| รายชื่อห้อง (ซ้าย) | ลูกค้าที่ผูกบัญชี LINE กับร้านแล้ว · มีป้าย รอตอบ บอกจำนวนข้อความที่ยังไม่ได้อ่าน · ช่องค้นหาเป็นการค้นที่เซิร์ฟเวอร์ จึงหาเจอแม้ลูกค้าเยอะมาก |
| ห้องแชท (ขวา) | ข้อความของลูกค้าอยู่ซ้าย ของร้านอยู่ขวา · ข้อความที่ส่งไม่สำเร็จมีกรอบแดงพร้อมเหตุผล |
| ช่องพิมพ์ | พิมพ์แล้วกด ส่ง · มีตัวนับตัวอักษรกันยาวเกินที่ LINE รับได้ · ปุ่ม รูป และ ไฟล์เอกสาร อยู่ทางซ้ายของช่องพิมพ์ |
| เดิม | ตอนนี้ |
|---|---|
| ลูกค้าทักมาแล้วหน้าเงียบ ต้องกดรีเฟรชเอง | ข้อความใหม่ขึ้นเองทันที · ห้องเด้งขึ้นบนสุด · ป้าย รอตอบ ขยับเอง |
ห้องขึ้นเป็นรหัสยาว ๆ (U1234…) | แสดงชื่อ LINE จริงของลูกค้า — ระบบดึงชื่อและรูปโปรไฟล์ให้เองเมื่อลูกค้าทักเข้ามาครั้งแรก |
| ส่งได้แต่ข้อความล้วน | ส่งรูปและไฟล์เอกสารได้ |
· รูป — กดปุ่มรูป → เลือกไฟล์ → เห็นตัวอย่างก่อน → กดส่ง · รองรับ ไฟล์รูปไม่เกิน 5 MB
· ไฟล์เอกสาร — กดปุ่มคลิปหนีบ → เลือกไฟล์ → กดส่ง (PDF · DOC · DOCX · XLS · XLSX · TXT · CSV · ZIP · ไม่เกิน 5 MB)
· ℹ️ ส่งสติกเกอร์จากหน้านี้ไม่ได้ (เจ้าของร้านสั่งถอดปุ่มออก 6 ก.ย. 2569) — แต่ สติกเกอร์ที่ลูกค้าส่งเข้ามายังแสดงตามปกติ
· ถ้าเลื่อนขึ้นไปอ่านข้อความเก่าอยู่ ระบบจะไม่กระชากจอลงล่าง แต่จะขึ้นปุ่ม "ข้อความใหม่" ให้กดเอง
· วิดีโอและไฟล์เสียงที่ลูกค้าส่งเข้ามา ระบบเก็บให้แล้ว (mp4 / m4a · ไม่เกิน 10 MB) — เดิมเก็บได้เฉพาะรูป · ไฟล์ที่ใหญ่เกินจะเห็นเป็นข้อความบอกว่ารับไม่ได้ ไม่หายเงียบ
· ⭐ ไฟล์รูป/วิดีโอ/เสียงในแชท เก็บไว้ 30 วัน แล้วระบบลบไฟล์ให้เองทุกคืน (ตี 3 ครึ่ง) — ประวัติแชทและชื่อไฟล์ยังอยู่ครบ เปิดไฟล์เก่ากว่านั้นไม่ได้อย่างเดียว โดยจะขึ้นว่า "ไฟล์หมดอายุแล้ว · เปิดดูไม่ได้"
· เหตุผล: ไฟล์แชทถูกสำรองขึ้นคลาวด์ทุกคืนและเก็บย้อนหลัง 30 ชุด ⇒ ไฟล์ 1 MB กินพื้นที่สำรองราว 30 MB ถ้าไม่มีกำหนดลบ พื้นที่จะโตไม่มีเพดาน
· ต้องการเก็บนานกว่านี้หรือปิดการลบ แจ้งผู้ให้บริการได้ (ตั้งค่าได้ที่เซิร์ฟเวอร์)
· 💡 ไฟล์สำคัญที่ต้องเก็บถาวร ให้บันทึกลงงานซ่อมแทน (แนบเป็นรูปเครื่อง) — รูปในงานซ่อมไม่ถูกลบตามกำหนดนี้
· ℹ️ ห้องเก่าที่ยังขึ้นเป็นรหัส U… จะเปลี่ยนเป็นชื่อจริงเองเมื่อลูกค้าทักเข้ามาครั้งถัดไป — หากต้องการให้เปลี่ยนทันทีทั้งหมด แจ้งผู้ให้บริการได้
บนมือถือจะแสดงทีละฝั่ง — แตะห้องเพื่อเข้าไปอ่าน แล้วกดลูกศรย้อนกลับเพื่อกลับไปรายชื่อ
🔴 ข้อความที่ส่งออกไปแล้วเรียกคืนไม่ได้ และนับเป็นโควตาแบบเสียเงินของ LINE OA — บรรทัดนี้แสดงอยู่ใต้ช่องพิมพ์ตลอดเวลา
⚠️ ส่งไม่สำเร็จจะขึ้นกรอบแดงพร้อมเหตุผลจาก LINE เสมอ ไม่มีการหายเงียบ · ถ้าเน็ตหลุด ก่อน ส่ง ระบบจะบอกว่ายังไม่ได้ส่ง (กดใหม่ได้) · ถ้าส่งไปแล้วไม่ได้คำตอบกลับ ระบบจะบอกว่า ไม่แน่ใจ ให้เลื่อนดูในห้องก่อนกดซ้ำ เพื่อไม่ให้ลูกค้าได้ข้อความ 2 ครั้ง
⚠️ ยังไม่มี: ข้อความตั้งเวลาส่ง (เจ้าของร้านแจ้งว่าไม่ใช้ จึงไม่ได้ทำ)
⭐⭐ เพิ่ม 5 ก.ย. 2569 — ส่งไฟล์เอกสาร · ผูกห้องแชทกับลูกค้า · ปุ่มแชทที่หน้าลูกค้า
① ส่งไฟล์เอกสารได้แล้ว (ปุ่มคลิปหนีบข้างปุ่มรูป) — รองรับ PDF · Word · Excel · ข้อความ · CSV · ZIP ไม่เกิน 5 MB · 🔴 LINE ไม่มีชนิดข้อความแบบ "ไฟล์" ⇒ ระบบส่งเป็น ข้อความที่มีชื่อไฟล์และลิงก์ ให้ลูกค้ากดดาวน์โหลด นี่คือวิธีเดียวที่ทำได้ ไม่ใช่ของชั่วคราว · ไม่รับไฟล์รูปแบบที่รันสคริปต์ได้ (SVG · HTML) โดยเจตนา
② ผูกห้องแชทกับลูกค้าในระบบ — ในห้องแชทมีปุ่ม "ผูกกับลูกค้า" · ผูกแล้วจะเห็นชื่อและเบอร์ลูกค้าบนหัวห้อง · เปลี่ยนหรือยกเลิกผูกได้ตลอด (มีหน้าต่างยืนยันก่อน) · ลูกค้า 1 คนผูกได้หลายบัญชี LINE (ลูกค้าบางคนมีหลายบัญชีจริง) — หน้าลูกค้าจะบอกเมื่อมีมากกว่า 1 ห้อง · ⚠️ ผูกกับ "ลูกค้าทั่วไป" ไม่ได้ — เป็นแถวที่ระบบสร้างให้ทุกสาขา ไม่ใช่คนจริง · ทุกครั้งที่ผูกหรือยกเลิก ระบบบันทึกไว้ใน Audit Log ว่าใครทำเมื่อไร
③ ปุ่มแชทที่หน้า "ลูกค้าทั้งหมด" — ลูกค้าที่ผูกบัญชี LINE ไว้แล้วจะมี ไอคอนแชท ในแถว กดแล้วเข้าห้องนั้นทันที · ลูกค้าที่ยังไม่ผูก ไม่มีปุ่ม และมีแถบอธิบายอยู่บนหน้าว่าปุ่มจะขึ้นเมื่อผูกแล้ว
🔴 ทั้ง 3 ข้อนี้อยู่ในแพ็คเกจเอ็นเตอร์ไพรส์ — ร้านแพ็คเกจอื่นจะไม่เห็นเมนู "แชท LINE"
และหน้า /customers จะเหมือนเดิมทุกอย่าง (ไม่มีปุ่ม ไม่มีช่องว่างเพิ่ม)
· เมนู "LINE OA" ยัง เห็นได้ทุกแพ็คเกจ โดยเจตนา — ร้านที่ลดแพ็คเกจลงมาต้องเข้าไป
ปิดหรือลบการเชื่อมต่อของตัวเองได้เสมอ
⭐⭐⭐ เพิ่ม 7 ก.ย. 2569 — เส้นตัดวันที่ · ตอบกลับข้อความ · ค้นหาในห้อง · คำใช้บ่อย · แทรกชื่อ
① เส้นตัดวันที่ — ข้อความไม่ไหลติดกันข้ามวันอีกแล้ว มีเส้นคั่นบอกว่าเป็นของวันไหน · ป้ายบนเส้น: วันนี้ · เมื่อวาน · 5 กันยายน (ปีนี้) · 5 กันยายน 2567 (ปีก่อน · เป็น พ.ศ.) · นับวันตาม เวลาไทย ⇒ ข้อความช่วง 00:00–06:59 ไม่ถูกจัดเป็นเมื่อวานอีกต่อไป
② ตอบกลับข้อความ (reply) — ทุกฟองมี ปุ่มลูกศร ในช่องว่างข้างฟอง (ฟองร้านอยู่ซ้าย · ฟองลูกค้าอยู่ขวา) · เห็นตลอดเวลา ไม่ต้องเอาเมาส์ไปชี้ — บนมือถือเป้าแตะ 44×44 พิกเซล · กดแล้วขึ้นแถบ "กำลังตอบกลับ…" เหนือช่องพิมพ์ พร้อมปุ่ม ✕ ยกเลิก · ส่งแล้วฟองใหม่จะมี บล็อกอ้างอิง ด้านบน — แตะบล็อกนั้นเพื่อกระโดดไปข้อความต้นทาง (มีกรอบเหลืองไฮไลต์ให้ ~2 วินาที) · ส่งไม่สำเร็จ เป้าหมายที่เลือกไว้ไม่หาย ⇒ กดส่งซ้ำได้เลย ไม่ต้องเลือกใหม่ · ใช้กับ รูปและไฟล์ ได้ด้วย · ข้อความต้นทางถูกลบไปแล้ว ฟองก็ยังแสดงตามปกติ ไม่พัง · 🔴 เป็นการอ้างอิงในระบบร้านเท่านั้น — ลูกค้าบน LINE จะไม่เห็นเครื่องหมายอ้างอิง บรรทัดนี้แสดงอยู่บนแถบตอบกลับตลอดเวลา เพื่อไม่ให้เข้าใจผิด
③ ค้นหาข้อความในห้อง — ปุ่ม แว่นขยาย ที่หัวห้อง · พิมพ์คำแล้วระบบพาไปที่ข้อความนั้นพร้อมไฮไลต์ให้เอง · ป้ายบอก ลำดับที่ / ทั้งหมด · ลูกศรขึ้น = เก่ากว่า · ลูกศรลง = ใหม่กว่า · ถ้าเจอข้อความที่ยังไม่ได้โหลด จะขึ้นแถบเหลืองบอกตรง ๆ พร้อมปุ่ม "โหลดข้อความเก่ากว่านี้" แล้วพาไปให้เอง (จงใจให้กดเอง ไม่โหลดวนอัตโนมัติ เพื่อไม่ให้ชนเพดานจำนวนคำขอของระบบ) · ปิดแถบค้นหา ⇒ ไฮไลต์ถูกล้างให้เอง
④ คำใช้บ่อย ⚡ + ตั้งค่า ⚙ — ข้อความสำเร็จรูปที่กดใส่ช่องพิมพ์ได้ทันที
· ⚡ เปิดรายการ กดข้อความที่ต้องการ ⇒ ใส่ลงช่องพิมพ์ ที่ตำแหน่งเคอร์เซอร์ ไม่ทับสิ่งที่พิมพ์ค้างไว้
· ⚙ เปิดหน้าตั้งค่า เพิ่ม / แก้ / ลบ / ปิดใช้ชั่วคราว / จัดลำดับ ได้
· ในข้อความใส่ ตัวแปร ได้: {ชื่อลูกค้า} · {ชื่อร้าน} · {ชื่อพนักงาน} ⇒ ระบบแทนค่าจริงให้ตอนกดใส่ช่องพิมพ์
· 🔴 แทนค่าตั้งแต่ตอนใส่ช่องพิมพ์ ไม่ใช่ตอนส่ง ⇒ พนักงาน เห็นข้อความจริงก่อนกดส่งเสมอ
· 🔴 คำใช้บ่อยเป็นของทั้งร้าน ไม่แยกตามสาขา — พนักงานย้ายสาขาแล้วยังเจอชุดเดิม
· 👤 ทุกคนที่เข้าหน้าแชทได้ใช้คำใช้บ่อยได้ · แต่ต้องเป็นผู้จัดการขึ้นไปจึงจะเพิ่ม/แก้/ลบได้
คนที่ไม่มีสิทธิ์จะ ไม่เห็นปุ่มเพิ่ม/แก้ ตั้งแต่แรก พร้อมข้อความบอกเหตุผล (ไม่ใช่กดแล้วเด้ง error)
· ชื่อซ้ำกันไม่ได้ ⇒ ระบบบอกที่ช่องชื่อทันที
⑤ ปุ่มแทรกชื่อ — ใส่ ชื่อลูกค้า / ชื่อร้าน / ชื่อพนักงาน ลงข้อความที่กำลังพิมพ์
· ใส่ ค่าจริง ลงไปเลย ไม่ใช่รหัส {ชื่อลูกค้า} ⇒ เห็นก่อนส่งเสมอ
· ห้องที่ยังไม่ผูกลูกค้า จะใช้ ชื่อที่แสดงบน LINE แทน (ไม่มีช่องว่างเปล่า)
⑥ แถวปุ่มย้ายมาอยู่บรรทัดของตัวเอง — ปุ่ม 5 ตัว (รูป · ไฟล์ · ⚡ · ⚙ · แทรกชื่อ) อยู่เหนือช่องพิมพ์ · ผลที่ได้: ช่องพิมพ์บนมือถือกว้างขึ้นจาก ~182 เป็น 246 พิกเซล (วัดที่จอกว้าง 390)
สิ่งที่ไม่เปลี่ยน — การส่งรูป/ไฟล์และเพดาน 5 MB · สติกเกอร์ที่ลูกค้าส่งมายังแสดงเหมือนเดิม · ปุ่ม "ข้อความใหม่" และกติกาการเลื่อนจอ · การผูก/ยกเลิกผูกลูกค้า · ฟองที่ส่งไม่สำเร็จยังขึ้นเหตุผลเหมือนเดิม
💳 แพ็คเกจ: เอ็นเตอร์ไพรส์ + เชื่อม LINE OA แล้ว (§14.6) · 👤 ไม่ต้องตั้งค่าเพิ่ม
เมื่อพิมพ์ ใบรับซ่อม ระบบจะเติมกล่อง "รับแจ้งสถานะงานซ่อมทาง LINE ของร้าน" ท้ายใบให้เอง มี รหัส 6 ตัว + QR เพิ่มเพื่อน + ขั้นตอน 2 ข้อ
| ขั้น | ลูกค้าทำอะไร |
|---|---|
| 1 | สแกน QR (หรือกดลิงก์) เพื่อเพิ่มเพื่อน LINE OA ของร้าน |
| 2 | พิมพ์รหัส 6 ตัวส่งเข้าแชท → ระบบผูกบัญชีให้ทันที |
จากนั้นลูกค้าจะได้รับการ์ดแจ้งสถานะอัตโนมัติ (§14.6B) และร้านตอบแชทได้จาก §14.6C
⚠️ รหัสเดิมใช้ซ้ำได้จนกว่าจะหมดอายุ (7 วัน) — พิมพ์ใบซ้ำได้รหัสเดิม ลูกค้าที่ถือใบไปแล้วจึงใช้ได้ · ผูกแล้วพิมพ์ใบซ้ำ กล่องนี้จะ ไม่โผล่ (ไม่ต้องผูกอีก)
🔴 กล่องนี้จะไม่โผล่เลย ถ้า: ร้านยังไม่เชื่อม LINE OA · แพ็คเกจไม่ถึง · ลูกค้าเป็น "ลูกค้าทั่วไป" · หรือ LINE OA ยังไม่ได้ตั้ง Basic ID — ใบรับซ่อมยังพิมพ์ได้ตามปกติ ไม่มีช่องว่างค้าง
📍 ไอคอน: Bell 🔔 ด้านบนขวาของหน้าจอ 👤 สิทธิ์: ทุก Role
วัตถุประสงค์: รับการแจ้งเตือนแบบ Real-time สำหรับเหตุการณ์สำคัญในระบบ
ประเภทการแจ้งเตือน:
| ประเภท | ผู้รับ | ตัวอย่าง |
|---|---|---|
| งานซ่อมใหม่ | ADMIN, MANAGER, OWNER | "รับเครื่องซ่อมใหม่: iPhone 15 ลูกค้า สมชาย" |
| สถานะซ่อมเปลี่ยน | ผู้มอบหมายงาน | "งานซ่อม #123 เสร็จแล้ว" |
| ยอดขายใหม่ | ADMIN, MANAGER | "ขายสินค้า: Samsung S24 ฿25,000" |
| เงินเดือนรออนุมัติ | OWNER, ADMIN | "มีเงินเดือนรออนุมัติ 5 รายการ" |
| Stock ต่ำ | ADMIN, MANAGER | "อะไหล่ 'แบตเตอรี่ iPhone 13' เหลือ 2 ชิ้น" |
| ประกันใกล้หมดอายุ | ADMIN, MANAGER | "ประกัน iPhone 14 ของ สมหญิง จะหมดใน 7 วัน" |
| ประกาศจากระบบ | ทุก Role | "📢 ประกาศใหม่: กำหนดอัพเดท..." (จากทีมงาน MobileHub) |
วิธีใช้งาน:
/portal/announcements)💡 เคล็ดลับ: การแจ้งเตือนทำงานแบบ Real-time ผ่าน Socket.IO และบันทึกลง Database เพื่อดูย้อนหลังได้
📍 เปิดได้ที่: Banner ที่ Dashboard (ครั้งแรก) หรือหน้า Profile → การแจ้งเตือน Push 👤 สิทธิ์: ทุกแพ็คเกจ STARTER+ (รวมทั้ง Super Admin)
วัตถุประสงค์: รับแจ้งเตือนเหตุการณ์สำคัญทันที แม้ปิดแท็บหรือปิดเบราว์เซอร์อยู่ — เด้งเหมือน notification ของ LINE/Facebook
อุปกรณ์ที่รองรับ:
วิธีเปิดใช้งาน:
สำหรับ iPhone / iPad:
เปิด-ปิดเองได้ตลอดเวลา:
ไปที่หน้า Profile → การ์ด "การแจ้งเตือน Push" → เลื่อน Switch เปิด/ปิด
กรณี blocked:
ถ้าเผลอกด "Block" → คลิกไอคอน 🔒 ข้างซ้ายของ URL ในเบราว์เซอร์ → การตั้งค่าไซต์ → การแจ้งเตือน → Allow → รีเฟรชหน้า
Multi-device:
Login จาก 3 เครื่อง (เช่น Desktop ที่ร้าน + มือถือคุณ + แท็บเล็ตช่าง) แล้วเปิด Push ทั้ง 3 เครื่อง — ระบบจะส่งแจ้งเตือนทุกเครื่องพร้อมกัน
💡 เคล็ดลับ: Push notifications ทำงานคู่กับ Bell ในระบบ — ถ้าเปิดเว็บอยู่จะได้ทั้ง bell + push (อาจซ้อนกัน), ถ้าปิดเว็บได้แค่ push. ระบบใช้ tag-based grouping ทำให้ notification เหตุการณ์เดียวกันรวมเป็นรายการเดียว ไม่รก
📍 เปิดได้ที่: Banner สีฟ้าด้านล่างจอใน Dashboard (เด้งเองตอน browser พร้อม) หรือเมนู "ติดตั้งแอป" ใน Chrome · Banner จะ รอจนปิดหน้าต้อนรับและจบ Tour แนะนำระบบก่อน แล้วค่อยขึ้น (ไม่เด้งซ้อนกันตอนเข้าครั้งแรก) 👤 สิทธิ์: ทุก Role
วัตถุประสงค์: ติดตั้ง MobileHub เป็นแอปบน Home Screen / Desktop เพื่อให้:
Banner ที่เด้งเอง — Chrome / Edge / Android:
หลังเปิด Dashboard ใช้งาน 2-3 นาที จะเห็น Paper สีฟ้า fixed ด้านล่างจอ ประกอบด้วย:
iPhone / iPad — ติดตั้งผ่าน Safari:
ปุ่ม "ติดตั้งเลย" จะเปลี่ยนเป็น "ดูวิธีติดตั้ง" เมื่อตรวจพบว่าเปิดผ่าน Safari → กดเพื่อเปิด Modal คำแนะนำ 3 ขั้นตอน:
⚠️ iOS ต้องใช้ Safari เท่านั้น ไม่รองรับ Chrome/Firefox บน iOS (ข้อจำกัดของ Apple)
Shortcuts บน Home Screen (Android / iOS):
หลังติดตั้งแล้ว — กดค้างที่ไอคอน MobileHub บน Home Screen → จะเห็น 4 ทางลัด:
/sales ขายสินค้าทันที/repair-intake รับเครื่อง/technician-repairs ดูงานที่มอบหมาย/track ค้นหาสถานะใบรับซ่อมตอนติดตั้งแล้ว:
display-mode: standalone)ถอนการติดตั้ง:
💡 เคล็ดลับ: ติดตั้งบนหลายเครื่องได้ — ที่ร้าน 1, ที่บ้าน 1, มือถือ 1 — ใช้บัญชีเดียวกัน Login จะเข้าถึงข้อมูลเดียวกันทุกเครื่อง
MobileHub ใช้สถาปัตยกรรม Multi-Tenant SaaS ที่ข้อมูลของแต่ละร้านถูกแยกกันอย่างสมบูรณ์ (Tenant Isolation)
หลักการสำคัญ:
tenantId กำกับ(tenantId, username) ไม่ใช่แค่ usernametenantId เพื่อตรวจสอบทุก Requestสิ่งที่แยกกันตาม Tenant:
ตำแหน่ง: Header ด้านบนของหน้า (ทุกหน้า)
วัตถุประสงค์: เลือกสาขาที่ต้องการดูข้อมูล
วิธีใช้:
⚠️ ข้อยกเว้น 1 จุด — แท็บ "งานของฉัน" ในหน้า งานช่าง ครอบทุกสาขาเสมอ (19 ส.ค. 2569)
งานซ่อมที่มอบหมายให้ช่างคนนั้นจะขึ้นครบทุกใบ ไม่ว่าจะเลือกสาขาไหนค้างไว้ เพราะช่างมักถูกส่ง ไปช่วยอีกสาขาแล้วรับงานกลับมาทำ — งานที่อยู่คนละสาขาจะมีป้ายชื่อสาขากำกับไว้ (ดู §5.2)
option "ทุกสาขา" (Multi-Branch Dashboard) — Pro+:
📦 แพ็คเกจ: Professional หรือ Enterprise
MULTI_BRANCH_DASHBOARD และ มีสาขา ≥ 2 (สาขาเดียวจะไม่เห็นเพราะ redundant)💡 STARTER ฿599 มีแค่ 1 สาขา อยู่แล้ว — option นี้จึงเป็นของ Pro/Enterprise ที่มีหลายสาขาเท่านั้น
หมายเหตุ:
⚠️ "ทุกสาขา" ใช้สำหรับ ดูรายการ เท่านั้น — เพิ่มของใหม่ไม่ได้ (ปรับปรุง 11 ส.ค. 2569)
ถ้าเลือก "ทุกสาขา" ค้างไว้แล้วกดเพิ่ม อะไหล่ หรือ อุปกรณ์เสริม ระบบจะขึ้นข้อความ ให้เลือกสาขาก่อน เพราะของทุกชิ้นต้องรู้ว่าเก็บอยู่สาขาไหน ให้เลือกสาขาที่ต้องการจากตัวเลือกด้านบน แล้วกดบันทึกอีกครั้ง
ก่อนหน้านี้กรณีนี้ขึ้นเป็นหน้าขาว (ข้อผิดพลาดของระบบ) โดยไม่บอกสาเหตุ ตอนนี้บอกชัดแล้ว
⚠️ ถ้าใช้บัญชีของหลายร้านบนเบราว์เซอร์เดียวกัน (ปรับปรุง 11 ส.ค. 2569)
ระบบจำสาขาที่เลือกไว้ล่าสุดในเครื่อง เมื่อสลับไปเข้าอีกร้าน ค่าที่จำไว้อาจยังเป็นสาขาของร้านเดิม ถ้ากดบันทึกในสภาพนั้น ระบบจะปฏิเสธพร้อมบอกให้แก้ แก้ได้ 2 ทาง: เลือกสาขาใหม่จากตัวเลือกด้านบน หรือรีเฟรชหน้า (การออกจากระบบแล้วเข้าใหม่ ไม่ช่วย เพราะไม่ได้ล้างค่าสาขาที่จำไว้)
เดิมกรณีนี้บันทึกสำเร็จเงียบ ๆ แล้วของไปอยู่สาขาของอีกร้าน ทำให้หายจากทุกหน้าจอที่กรองตามสาขา
ปุ่มวงกลมลูกศรขึ้นที่ลอยอยู่ มุมขวาล่าง ของทุกหน้าที่มีเนื้อหายาว
| เรื่อง | พฤติกรรม |
|---|---|
| เมื่อไหร่ถึงโผล่ | เลื่อนลงเกินประมาณ 1 หน้าจอ (400px) ค่อยจาง ๆ ขึ้นมา |
| กดแล้วเป็นยังไง | เลื่อนกลับขึ้นบนสุดแบบนุ่มนวล — ถ้าอยู่ลึกมาก (เกิน 8,000px) จะกระโดดทันทีเพื่อไม่ให้เสียเวลา |
| หน้าที่ไม่มีปุ่มนี้ | จอแสดงราคาลูกค้า (/customer-display) และจอลงเวลาหน้าร้าน (/kiosk) — เป็นจอที่ตั้งโชว์ ไม่ควรมีปุ่มลอย |
| บังปุ่มอื่นไหม | ไม่บัง — ระบบเว้นที่ว่างใต้เนื้อหาไว้ให้แล้ว ปุ่มจัดการของแถวสุดท้ายในตารางยังกดได้ตามปกติ |
| อยู่เหนือหน้าต่างป๊อปอัพไหม | ไม่ — ปุ่มจะอยู่ใต้กล่องข้อความ กล่องยืนยัน และแถบแจ้งเตือนเสมอ |
สิ่งที่แก้ในรอบนี้: เดิมปุ่มนี้ ไม่เคยทำงานเลยในหน้าฝั่งผู้ดูแลระบบ (/admin) และในหน้าที่
ข้อมูลโหลดเสร็จช้า ปุ่มก็จะไม่โผล่ทั้งหน้านั้นแม้จะเลื่อนไปไกลแค่ไหน ตอนนี้ทำงานครบทุกหน้าแล้ว
พร้อมรองรับการใช้แป้น Tab (ตอนซ่อนอยู่จะไม่ถูก Tab ไปโดน) และเคารพการตั้งค่า
"ลดการเคลื่อนไหว" ของเครื่องผู้ใช้
ระบบทำงานผ่านอินเทอร์เน็ต ไม่รองรับการใช้งานแบบออฟไลน์ เมื่อเน็ตของร้านหลุด จะเปิดขายหรือบันทึกรายการไม่ได้จนกว่าสัญญาณจะกลับมา — แต่ ข้อมูลที่บันทึกไว้แล้วไม่หาย เพราะเก็บอยู่บนเซิร์ฟเวอร์ ไม่ได้เก็บในเครื่องที่ร้าน
แถบเตือนมุมซ้ายล่าง จะขึ้นเองทันทีที่เน็ตหลุด และหายเองเมื่อกลับมา คลิกทะลุผ่านได้ จึงไม่บังปุ่มไหน และไม่มีปุ่มปิด (เพราะไม่ควรปิดข้อมูลนี้ทิ้ง)
ข้อความตอนกดบันทึกแล้วเน็ตหลุด มี 2 แบบ อ่านให้ดีก่อนกดซ้ำ:
| ข้อความขึ้นว่า | แปลว่า | ต้องทำอะไร |
|---|---|---|
| "ยังไม่ได้บันทึก คำขอไม่ได้ถูกส่งออกจากเครื่องนี้เลย" | ระบบรู้แน่นอนว่าข้อมูลยังไม่ถึงเซิร์ฟเวอร์ | เช็คสัญญาณแล้ว กดบันทึกใหม่ได้เลย ไม่ซ้ำแน่นอน |
| "ส่งข้อมูลออกไปแล้วแต่ไม่ได้รับคำตอบกลับ — ไม่แน่ใจว่าบันทึกสำเร็จหรือไม่" | เน็ตหลุดระหว่างทาง ระบบไม่รู้ว่าเซิร์ฟเวอร์รับไปแล้วหรือยัง | อย่าเพิ่งกดซ้ำ ให้ไปเปิดดูรายการนั้นก่อนว่ามีแล้วหรือยัง ถ้ายังไม่มีจึงบันทึกใหม่ |
⚠️ ทำไมต้องแยก 2 แบบ — ถ้าระบบบอกว่า "ยังไม่บันทึก" ทั้งที่จริง ๆ บันทึกไปแล้ว แล้วพนักงานกดซ้ำ จะได้บิลซ้ำ 2 ใบ เงินเพี้ยน และไปโผล่ตอนปิดกะโดยหาสาเหตุไม่เจอ ระบบจึงพูดเฉพาะสิ่งที่รู้จริง และบอกตรง ๆ เมื่อไม่รู้
ทางออกที่ใช้ได้ทันทีเมื่อเน็ตร้านหลุด: เปิดฮอตสปอตจากโทรศัพท์มือถือ ระบบออกแบบมาให้ใช้บนมือถือได้เต็มรูปแบบอยู่แล้ว จึงเปิดขายต่อได้ด้วยเน็ตมือถือเครื่องเดียว แนะนำให้เตรียมวิธีนี้ไว้ล่วงหน้า ไม่ใช่รอให้เกิดก่อน
เปิดสาขาใหม่แล้วต้องมานั่งสร้างรายการอุปกรณ์เสริมกับอะไหล่ใหม่ทีละตัวเป็นร้อยรายการ ตอนนี้คัดลอกรายการทั้งชุดจากสาขาที่มีอยู่แล้วได้ในคลิกเดียว
กดได้ 3 ที่ แล้วแต่ว่าตอนนั้นอยู่หน้าไหน
| หน้า | ปลายทาง | คัดลอกอะไรได้ |
|---|---|---|
| สาขา — ปุ่มอยู่ข้าง "คัดลอกข้อมูลหลัก" | สาขาในแถวที่กด | อุปกรณ์เสริม · อะไหล่ (เลือกได้) |
| อุปกรณ์เสริม | สาขาที่เลือกอยู่บนแถบเลือกสาขา | อุปกรณ์เสริม |
| อะไหล่ | สาขาที่เลือกอยู่ | อะไหล่ |
ลำดับการทำงาน — เลือกสาขาต้นทาง → ระบบคำนวณให้ดูก่อนว่า จะเพิ่มกี่รายการ ข้ามกี่รายการ → ตรวจตัวเลขแล้วค่อยกดยืนยัน → คัดลอกจริง ขั้นดูก่อนนี้ยังไม่เขียนข้อมูลลงระบบเลย กดออกได้โดยไม่มีอะไรเปลี่ยน
⚠️ จำนวนสต๊อกของทุกรายการที่คัดลอกมาจะเป็น 0 เสมอ ระบบคัดลอกให้เฉพาะ รายการสินค้า (ชื่อ · รหัส · หมวด · ยี่ห้อ · ราคาทุน · ราคาขาย · จุดสั่งซื้อขั้นต่ำ) ไม่คัดลอกจำนวน เพราะของจริงยังไม่ได้ถูกย้ายไปสาขาใหม่ ให้ไปนับของจริงที่สาขานั้นแล้วปรับจำนวนเองที่หน้ารายการ ถ้าระบบคัดลอกจำนวนมาให้ด้วย ยอดสต๊อกรวมของร้านจะกลายเป็น 2 เท่าทันที และไปโผล่ผิดทั้งในรายงานและต้นทุนขาย
สิ่งที่ควรรู้
เครื่องมือถือคัดลอกไม่ได้ และไม่ควรคัดลอก — เครื่อง 1 รายการในระบบ = เครื่องจริง 1 เครื่องที่ผูกกับ IMEI ถ้าคัดลอกไปสาขาอื่นจะกลายเป็นมีเครื่องเดียวกันอยู่ 2 ที่ ซึ่งไม่ตรงกับของจริง การย้ายเครื่องระหว่างสาขาให้ใช้ โอนย้ายสินค้าระหว่างสาขา ซึ่งย้ายของจริงพร้อมจำนวน
Prefix: /api/v1
| Module | Endpoint | Method | คำอธิบาย |
|---|---|---|---|
| Auth | /auth/login | POST | เข้าสู่ระบบ |
| Auth | /auth/register | POST | สมัครใช้งาน |
| Auth | /auth/verify-email | POST | ยืนยัน OTP |
| Products | /products | GET/POST | ดู/เพิ่มสินค้า |
| Sales | /sales | GET/POST | ดู/สร้างการขาย |
| Repairs | /repairs | GET/POST | ดู/สร้างงานซ่อม |
| Customers | /customers | GET/POST | ดู/เพิ่มลูกค้า |
| Payroll | /payroll | GET/POST | ดู/คำนวณเงินเดือน |
| Expenses | /expenses | GET/POST/PUT/DELETE | ดู/บันทึก/แก้ไข/ลบค่าใช้จ่ายดำเนินงาน |
| Expenses | /expenses/summary/by-category | GET | สรุป expense ตามหมวด (สำหรับ chart) |
| Shift | /shift/current | GET | ดูกะที่เปิดอยู่ของ user |
| Shift | /shift | GET | ประวัติกะ (admin/manager: ทั้งสาขา; cashier: ของตัวเอง) |
| Shift | /shift/open | POST | เปิดกะใหม่ — body: openingFloat |
| Shift | /shift/:id/live-totals | GET | preview totals ของกะ OPEN ก่อนปิด |
| Shift | /shift/:id/close | POST | ปิดกะ — body: actualCash + varianceReason |
| POS | /sales/preflight?branchId=... | GET | เช็คว่า user ขายได้ไหม — returns {shiftRequired, hasOpenShift, canSell, ...} |
| Tax CIT | /reports/cit?period=H1|FULL&year=YYYY | GET | คำนวณภาษีนิติบุคคล (CORPORATION only) |
| Tax WHT | /reports/wht?year=YYYY&month=MM | GET | สรุปหัก ณ ที่จ่าย — group by payee + Export CSV |
| Suppliers | /suppliers | GET/POST/PUT/DELETE | ดู/เพิ่ม/แก้/ลบผู้จัดหา |
| Reorders | /reorders | GET/POST | ดู/สร้างคำสั่งซื้ออะไหล่ |
| Reorders | /reorders/low-stock | GET | อะไหล่ที่ต่ำกว่า min stock + suggestedQty |
| Reorders | /reorders/:id/send|receive|cancel | POST | ส่งคำสั่ง/รับเข้า/ยกเลิก |
| Stock Count | /stock-count | GET/POST | ดู/เริ่มรอบนับ (เริ่มรอบ = ผู้จัดการขึ้นไป) |
| Stock Count | /stock-count/:id/items/:itemId | PUT | บันทึก countedQty ของ item |
| Stock Count | /stock-count/:id/scan | POST | ยิงบาร์โค้ด 1 ครั้ง = นับเพิ่ม 1 (มือถือ = ยืนยันว่าเจอ ไม่บวกซ้ำ) |
| Stock Count | /stock-count/:id/cancel | POST | ยกเลิกรอบที่เปิดผิด (ผู้จัดการขึ้นไป) — body: reason ≥ 10 ตัวอักษร · ไม่แตะสต๊อกและไม่ลบตัวเลขที่นับไว้ · กู้คืนไม่ได้ |
| Stock Count | /stock-count/:id/complete | POST | ปิดรอบนับ + คำนวณ totals + ปรับสต๊อกจริง (ตัวเลือก) |
| Stock Transfer | /stock-transfer | GET/POST | ดู/ขอโอน |
| Stock Transfer | /stock-transfer/:id/approve|receive|cancel | POST | อนุมัติ + ส่ง/รับเข้า/ยกเลิก |
| Sales Invoice (B2B) | /sales-invoices | GET/POST | ดู/ออก invoice — body: customerId + items + paymentTerms |
| Sales Invoice (B2B) | /sales-invoices/:id/payment | POST | บันทึกรับเงิน — body: amount + paymentMethod |
| Sales Invoice (B2B) | /sales-invoices/:id/cancel | POST | ยกเลิก invoice (ถ้ายังไม่ PAID) |
| Refunds | /sales/refunds/list | GET | list refund ทั้งหมด — filter date/method/search |
| Reports | /reports/:type | GET | ดูรายงาน |
| Dashboard | /dashboard/stats | GET | สถิติ Dashboard |
| Public Tracking | /public/repairs/track/:slug/:repairId | GET | ติดตามสถานะ (ไม่ต้อง auth, masked PII) |
| Public Tracking | /public/repairs/track/:slug/:repairId/verify | POST | ยืนยันด้วย 4 ตัวท้ายเบอร์ → full info |
| Public Tracking | /public/repairs/lookup?code= | GET | ค้นด้วยเลขเดียว ข้าม tenant (Kerry-style) → redirect |
| Public Tracking | /public/tenants/search?q= | GET | autocomplete ชื่อร้าน (deprecated — เหลือไว้สำหรับ Phase 2) |
| Billing (Stripe) | /tenant/billing/stripe/status | GET | ระบบเปิดให้จ่ายด้วยบัตรหรือยัง (คืนแค่ธง ไม่มีคีย์) |
| Billing (Stripe) | /tenant/billing/stripe/checkout/:paymentId | POST | สร้างหน้าชำระเงิน → คืน URL ของ Stripe |
| Webhook | /webhooks/stripe | POST | Stripe แจ้งผลการชำระเงิน — ยืนยันด้วยลายเซ็น ไม่ใช่ JWT |
| ส่วน | เทคโนโลยี | เวอร์ชัน |
|---|---|---|
| Frontend | Next.js | 16 |
| Frontend | React | 19 |
| Frontend | Mantine UI | v8.3 |
| Frontend | Zustand | State Management |
| Frontend | Socket.IO Client | Real-time |
| Backend | Fastify | Node.js Framework |
| Backend | Prisma ORM | PostgreSQL Client |
| Database | PostgreSQL | |
| Real-time | Socket.IO | |
| Auth | JWT | 24h tenant, 12h admin |
| File Upload | Fastify Multipart | สูงสุด 5MB |
| Font | Kanit | Thai Font |
| Timezone | Asia/Bangkok | dayjs |
ไฟล์: docker-compose.yml (root)
# Start production docker-compose up -d # View logs docker-compose logs -f
Services:
backend — Fastify API (port 3001)frontend — Next.js App (port 3000)postgres — PostgreSQL Databasenginx — Reverse Proxy (port 80/443)# Backend cd backend pm2 start ecosystem.config.js # Frontend cd frontend pm2 start ecosystem.config.js
Config:
backend/ecosystem.config.js — Cluster modefrontend/ecosystem.config.js — Cluster modeBackend (backend/.env):
DATABASE_URL=postgresql://...
JWT_SECRET=your-secret-key
PORT=3001
ALLOWED_ORIGINS=https://mobilehub.ajsoftwaredev.com
UPLOAD_DIR=/app/uploads
Frontend (.env.production):
NEXT_PUBLIC_API_URL=https://api.mobilehub.ajsoftwaredev.com
NEXT_PUBLIC_SOCKET_URL=wss://api.mobilehub.ajsoftwaredev.com
💡 หมายเหตุ: การ backup จัดการโดยทีมสนับสนุนระบบ (Super Admin) สามารถติดต่อผ่าน Support Ticket ได้
ผ่าน Command Line (สำหรับผู้ดูแลระบบที่มีสิทธิ์ SSH):
cd /opt/mobilehub bash scripts/backup.sh
สิ่งที่ถูกสำรองในแต่ละรอบ (ตั้งแต่ 6 ส.ค. 2569):
| ไฟล์ | เนื้อหา | ทำไมสำคัญ |
|---|---|---|
mobilehub_<วันเวลา>.sql.gz.enc | ฐานข้อมูลทั้งหมด | ข้อมูลขาย/ซ่อม/สต็อก/ลูกค้า |
mobilehub-uploads_<วันเวลา>.tar.gz.enc | ไฟล์ที่อัปโหลด | รูปเครื่อง · โลโก้ร้าน · สำเนาบัตรประชาชนและลายเซ็นในใบรับซื้อ ซึ่งเป็นหลักฐานทางกฎหมายที่สร้างใหม่ไม่ได้ |
⚠️ ก่อน 6 ส.ค. 2569 ระบบสำรองเฉพาะฐานข้อมูล — กู้กลับแล้วข้อมูลครบแต่เปิดรูปไม่ขึ้นสักรูป เพราะฐานข้อมูลเก็บแค่ที่อยู่ของไฟล์ ไม่ได้เก็บตัวไฟล์
cd /opt/mobilehub bash scripts/verify-restore.sh # ใช้ไฟล์ล่าสุด
สคริปต์จะถอดรหัส → กู้ลง ฐานข้อมูลชั่วคราว → เทียบจำนวนตารางและจำนวนแถวกับฐานข้อมูลจริง → ลบฐานข้อมูลชั่วคราวทิ้ง · ไม่แตะฐานข้อมูลจริงเลย รันบน production ได้อย่างปลอดภัย
💡 ไฟล์สำรองที่ไม่เคยถูกกู้กลับ ไม่ใช่ไฟล์สำรอง — เป็นแค่ไฟล์ที่เราหวังว่าจะใช้ได้ จะรู้ว่าใช้ไม่ได้ก็ตอนที่ต้องใช้จริง ซึ่งสายเกินแก้แล้ว
cd /opt/mobilehub set -a; source .env.production; set +a # โหลดคีย์ + ชื่อฐานข้อมูล # ── 1. ฐานข้อมูล ────────────────────────────────────────────── openssl enc -d -aes-256-cbc -pbkdf2 -pass env:BACKUP_ENCRYPTION_KEY \ -in backups/mobilehub_XXXXXXXX_XXXXXX.sql.gz.enc | gunzip > /tmp/restore.sql docker compose -f docker-compose.prod.yml stop backend frontend # หยุดแอปก่อน docker exec -i mobilehub-postgres psql -v ON_ERROR_STOP=1 \ -U "$POSTGRES_USER" -d "$POSTGRES_DB" < /tmp/restore.sql rm -f /tmp/restore.sql # ลบทันที เป็นข้อมูลดิบทั้งร้าน # ── 2. ไฟล์ที่อัปโหลด ───────────────────────────────────────── openssl enc -d -aes-256-cbc -pbkdf2 -pass env:BACKUP_ENCRYPTION_KEY \ -in backups/mobilehub-uploads_XXXXXXXX_XXXXXX.tar.gz.enc \ | docker run --rm -i -v mobilehub-uploads:/dst alpine:3 tar xzf - -C /dst docker compose -f docker-compose.prod.yml --env-file .env.production up -d
⚠️ 3 จุดที่พลาดบ่อยและทำให้กู้ไม่สำเร็จ
-pbkdf2 และ -pass env:... — คำสั่งที่ขาด 2 ตัวนี้ (แบบที่คู่มือเขียนไว้ก่อน
6 ส.ค. 2569) จะค้างรอให้พิมพ์รหัสผ่านจากแป้นพิมพ์ตลอดไป ไม่ใช่ error ที่มองเห็น-v ON_ERROR_STOP=1 — ถ้าไม่ใส่ psql จะข้ามคำสั่งที่พังแล้วจบด้วยสถานะ
"สำเร็จ" ทั้งที่ตารางหายไปครึ่งหนึ่งBACKUP_ENCRYPTION_KEY — คู่มือเวอร์ชันก่อนหน้าเขียนว่า
BACKUP_ENCRYPTION_SALT ซึ่งไม่มีอยู่จริงในระบบ⚠️ คีย์ต้องอยู่ 2 ไฟล์ ค่าเดียวกัน — .env.production (สคริปต์ backup.sh ใช้)
และ backend/.env (ฟีเจอร์สำรองข้อมูลในหน้าเว็บใช้) · ถ้าขาดที่ .env.production
ไฟล์สำรองจะถูกเขียนเป็น plaintext ทุกวันโดยพิมพ์แค่ WARNING ลง log
ไฟล์สำรองที่อยู่ดิสก์เดียวกับฐานข้อมูล จะหายพร้อมกันตอนดิสก์พัง — ตั้ง RCLONE_REMOTE
ใน .env.production (เช่น gdrive:mobilehub-backups) แล้ว backup.sh จะส่งขึ้นให้เองทุกคืน
ไฟล์ถูกเข้ารหัสตั้งแต่อยู่ในเครื่องแล้ว คีย์ไม่เคยออกจาก VPS ปลายทางจึงเป็นแค่ที่เก็บ ไม่ต้องเชื่อถือผู้ให้บริการ
💡 ระบบจะแจ้งเตือนแอดมินอัตโนมัติเมื่อ ไฟล์สำรองล่าสุดเก่าเกิน 36 ชั่วโมง หรือ ยังไม่ได้ส่งออกนอกเครื่อง — ตัวนี้จับกรณีที่อันตรายที่สุดคือ สคริปต์ไม่ได้รันเลย ซึ่งจะไม่มีอะไรส่งเสียงร้องออกมาให้ได้ยิน
| กฎ | รายละเอียด |
|---|---|
| JWT Token | Tenant: 24h, Admin: 12h |
| OTP | Hash ด้วย SHA-256 + สร้างด้วย crypto.randomInt |
| CORS | Production ห้าม Wildcard (*) |
| Body Limit | สูงสุด 1MB (ไฟล์ Upload 5MB แยก) |
| Pagination Cap | สูงสุด 100 รายการต่อหน้า |
| Rate Limit | 100 req/min (global), 10/min (auth), 5/min (register) |
| Upload Path | Validate branchId + path.resolve check |
| Admin Auth | ใช้ adminToken แยกจาก Tenant Token |
| Socket.IO | JWT Auth ก่อน connect, emit เฉพาะ Tenant Room |
| Mass Assignment | Whitelist fields ก่อน Prisma update |
| Error Response | ไม่ expose error.message ใน 500 response |
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| Login ไม่ได้ | Token หมดอายุ | ออกจากระบบแล้วเข้าใหม่ |
| ข้อมูลไม่แสดง | Branch ไม่ถูก | เปลี่ยน Branch ใน Selector |
| QR Kiosk ไม่ทำงาน | Camera Permission | อนุญาตกล้องในเบราว์เซอร์ |
| PromptPay QR ว่าง | ยังไม่ได้ตั้งค่าเบอร์ | ตั้งค่าใน Settings → PromptPay Phone |
| Export Excel ช้า | ข้อมูลมาก | ลดช่วงวันที่ |
| Notification ไม่มา | Socket.IO disconnect | รีเฟรชหน้า |
| Upload ไม่ได้ | ไฟล์ใหญ่เกิน | ขนาดสูงสุด 5MB ต่อไฟล์ |
| หน้าขาว (Error) | JavaScript Error | F5 หรือ Clear Cache |
คู่มือนี้จัดทำสำหรับ MobileHub v2 เวอร์ชัน 2.0 อัปเดตล่าสุด: 10 สิงหาคม 2569 สอบถามเพิ่มเติม: support@mobilehub.ajsoftwaredev.com
MobileHub v2.0 | คู่มือการใช้งาน | © 2026 AJ Software Dev.
ดาวน์โหลด PDF