ไอเดีย #16: ระบบ POS ร้านกาแฟ
ลองไปยืนหลังเคาน์เตอร์ร้านกาแฟเล็ก ๆ ช่วงเช้าดูสักวัน จะเห็นว่าบาริสต้าต้องจำว่าแก้วนี้หวานน้อย แก้วนั้นเพิ่มช็อต อีกแก้วเปลี่ยนเป็นนมโอ๊ต พร้อมกับคิดเงินและทอนเงินไปด้วย พอเย็นปิดร้านก็ต้องนั่งนับเงินลิ้นชักว่าตรงกับยอดขายหรือเปล่า เจ้าของร้านหลายคนอยากได้ POS ที่เข้าใจโลกของร้านกาแฟจริง ๆ ไม่ใช่ POS ร้านค้าทั่วไปที่ใส่ตัวเลือกเครื่องดื่มไม่ได้
ใครจะใช้
- แคชเชียร์/บาริสต้า — รับออร์เดอร์ เลือกออปชัน รับเงิน พิมพ์ใบเสร็จ
- ผู้จัดการกะ — เปิดกะ ปิดกะ ตรวจเงินสดในลิ้นชัก
- เจ้าของร้าน — จัดการเมนู ราคา และดูรายงานยอดขาย
ฟีเจอร์ขั้นต่ำ (MVP)
- จัดการเมนูแบ่งหมวด (กาแฟ ชา ขนม) พร้อมราคาตามขนาดหรือประเภท ร้อน เย็น ปั่น
- กลุ่มออปชัน (modifier) เช่น ระดับความหวาน ชนิดนม เพิ่มช็อต วิปครีม บางตัวเลือกมีราคาเพิ่ม บางกลุ่มบังคับเลือก
- หน้าขายแบบปุ่มใหญ่ใช้บนแท็บเล็ต เพิ่มรายการลงตะกร้า แก้ไขจำนวน และใส่หมายเหตุ
- รับชำระด้วยเงินสด (คำนวณเงินทอน) หรือ PromptPay QR ตามยอด
- พิมพ์ใบเสร็จจากเครื่องพิมพ์ใบเสร็จความร้อน และพิมพ์สติกเกอร์ติดแก้วถ้ามี
- เปิดกะด้วยเงินทอนตั้งต้น ปิดกะด้วยการนับเงินจริง แล้วแสดงส่วนต่างเทียบกับยอดที่ระบบคำนวณ
- รายงานยอดขายรายวัน เมนูขายดี และแยกตามช่องทางชำระเงิน
ต่อยอดได้อีก
- ตัดสต็อกวัตถุดิบตามสูตร เช่น ลาเต้ 1 แก้วใช้เมล็ด 18 กรัม นม 150 มล.
- หน้าจอบาริสต้า (kitchen display) แสดงออร์เดอร์ที่ต้องทำตามลำดับ
- ระบบสมาชิกสะสมแต้ม และโปรโมชันตามช่วงเวลา
- ทำงานแบบออฟไลน์ได้เมื่อเน็ตร้านล่ม แล้วค่อย sync ทีหลัง
โครงข้อมูลตั้งต้น
products— id, category_id, name, base_price, is_activemodifier_groups/modifiers— id, name, required, max_select / id, group_id, name, price_deltaorders— id, shift_id, order_no, subtotal, discount, total, payment_method, status, created_atorder_items— id, order_id, product_id, product_name, qty, unit_price, modifiers_json, line_totalshifts— id, user_id, opened_at, opening_cash, closed_at, counted_cash, expected_cash
ระดับความยาก และสิ่งที่จะได้เรียนรู้
ระดับ ปานกลาง ทำเป็นเว็บแอปด้วย Yii2 หรือ Laravel + PostgreSQL/MySQL แล้วใช้ JavaScript ทำหน้าขาย หรือทำหน้าขายด้วย Flutter บนแท็บเล็ตก็ได้ สิ่งที่จะได้เรียนรู้:
- การออกแบบ product กับ modifier ที่ยืดหยุ่นแต่ไม่ซับซ้อนเกินไป
- การเก็บ snapshot ชื่อและราคาไว้ใน order_items เพื่อให้ประวัติไม่เปลี่ยนตามเมนู
- การสั่งพิมพ์ใบเสร็จผ่านเครื่องพิมพ์ ESC/POS
- การกระทบยอดเงินสดตอนปิดกะ
ข้อควรระวัง
- คำนวณเงินด้วย
DECIMALหรือเก็บเป็นสตางค์ อย่าใช้ float เพราะเศษทศนิยมจะทำให้ยอดปิดกะไม่ตรง - การยกเลิกบิลหรือแก้ไขหลังชำระเงินต้องมีสิทธิ์เฉพาะและบันทึก log ทุกครั้ง กันการทุจริตในร้าน
- ถ้าร้านจดทะเบียน VAT จะมีเรื่องใบกำกับภาษีอย่างย่อและการปัดเศษเข้ามาเกี่ยว ควรตรวจสอบรูปแบบเอกสารกับนักบัญชีก่อนใช้งานจริง
ใครเคยทำ POS ให้ร้านกาแฟหรือร้านเครื่องดื่มบ้างครับ เก็บออปชันของแต่ละแก้วเป็น JSON หรือแยกตารางแบบไหนแล้วทำรายงานง่ายกว่ากัน และเจอปัญหาเรื่องเครื่องพิมพ์ใบเสร็จแบบไหนบ้าง ใครลองทำแล้วมาเล่าประสบการณ์ในกระทู้นี้ได้เลย