ผลงาน

ระบบร้านทอง หน้าร้าน จำนำ ออมทอง และแอปลูกค้าใน LINE

ระบบงานร้านทองที่รวมงานซื้อขายหน้าร้าน จำนำ และออมทองไว้ในที่เดียว ลูกค้าเช็กยอดและส่งสลิปผ่าน LINE ได้เอง ใช้งานจริง 3 ร้านจากโค้ดชุดเดียว

ปี
2566
Stack
Laravel, Filament, Livewire, LINE LIFF, MariaDB, Horizon
เผยแพร่
เวลาอ่าน
4 นาที

โจทย์

ร้านทองหนึ่งร้านมีงานสามสายเดินไปพร้อมกัน คือซื้อขายทองหน้าร้าน รับจำนำ และรับออมทอง ซึ่งลูกค้าทยอยโอนเงินสะสมไว้จนพอแลกเป็นทองได้ เดิมร้านใช้ระบบ PHP ที่คนอื่นเขียนไว้ วางอยู่บน shared hosting

เราเขียนระบบใหม่ด้วย Laravel แล้วย้ายขึ้น VM ที่เราดูแลให้ ตั้งเป้าให้ทั้งสามงานอยู่ในระบบเดียว ราคาทองอัปเดตเอง และลูกค้าออมทองดูยอดหรือส่งสลิปได้จาก LINE โดยไม่ต้องทักถามร้านทุกครั้ง

ภาพรวมการทำงาน

flowchart LR
  C[ลูกค้า] -->|ดูยอด ส่งสลิป| L[แอปใน LINE]
  L --> S[(ระบบร้านทอง)]
  P[พนักงานหน้าร้าน] -->|ซื้อขาย จำนำ ออมทอง| S
  G[ราคาทองประจำวัน] -->|ทุก 5 นาที| S
  K[SlipOK] -->|ผลตรวจสลิป| S
  S -->|แจ้งเตือน| L
  S -->|CSV / JSON| A[ผู้ทำบัญชี]

พนักงานทำงานในระบบหลังร้าน ลูกค้าคุยกับร้านผ่าน LINE ส่วนราคาทองและการตรวจสลิประบบทำเองตามรอบ

สิ่งที่สร้าง

หน้าร้าน ซื้อ ขาย และเทิร์นทอง

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

  • บิลซื้อและบิลขายใช้โครงเดียวกัน มีสถานะร่าง → จัดสินค้า → เสร็จ และยกเลิกได้
  • เทิร์นทอง (ลูกค้าเอาทองเก่ามาแลกทองใหม่) เปิดบิลซื้อกับบิลขายพร้อมกันใน transaction เดียว
  • บิลที่เสร็จแล้วตัดหรือเพิ่มสต็อกให้อัตโนมัติ พิมพ์ใบเสร็จได้ทั้งแบบเครื่องพิมพ์ความร้อนและ PDF

หน้าจอขายที่เคาน์เตอร์ เลือกสินค้าจากรายการทางซ้าย บิลขายอยู่ทางขวา

หน้าจอขาย: แตะสินค้าทางซ้ายลงบิล ราคาคิดจากราคาทองล่าสุดที่มุมบน (ข้อมูลตัวอย่าง)

จำนำ

ตั๋วจำนำเก็บรายการทองที่นำมาจำนำ ยอดเงินต้น และอัตราดอกเบี้ย ทุกครั้งที่ลูกค้ามาจ่ายเงิน ระบบบันทึกเป็นงวด ซึ่งมีสามแบบคือส่งดอก ไถ่ถอน หรือหลุดจำนำ

  • สถานะของตั๋วคิดจากงวดที่จ่ายอย่างเดียว ถ้าลบงวดไถ่ถอนทิ้ง ตั๋วก็กลับมาเปิดเอง สถานะจึงไม่เพี้ยนจากเงินที่รับจริง
  • ดอกเบี้ยอ่านจากตารางที่ร้านตั้งเอง มีดอกขั้นต่ำ และคิดตามจำนวนวันตอนไถ่ถอน
  • ก่อนครบกำหนด ระบบส่ง LINE เตือนลูกค้าตอน 8 โมงเช้า

Dashboard แสดงยอดจำนำวันนี้ ดอกเบี้ยรับจริง และรายการส่งงวดจำนำล่าสุด

Dashboard: ยอดของวันนี้ และงวดจำนำที่ลูกค้าเพิ่งจ่าย (ข้อมูลตัวอย่าง)

ออมทอง

บัญชีออมมีสามแบบ แบบจองทองล็อกน้ำหนักและราคาไว้ตั้งแต่วันเปิด แบบฝากเงินสะสมไปเรื่อย ๆ ไม่มีเป้า และบัญชีค่าแนะนำที่ระบบเติมให้เองเมื่อเพื่อนที่ลูกค้าแนะนำมาฝากครั้งแรก

  • ยอดในบัญชีคำนวณจากรายการฝากถอนทุกรายการ ไม่มีใครแก้ยอดตรง ๆ
  • ตอนรับทอง ลูกค้าเลือกได้ว่าจะรับที่ร้านหรือให้ส่งพัสดุพร้อมเลขติดตาม ถ้ามีเงินเหลือ ระบบย้ายไปเปิดบัญชีฝากใหม่ให้
  • บัญชีจองทองที่ขาดส่งนานเกินกำหนดของร้าน ระบบปิดให้ทุกเช้า

หน้ารายละเอียดบัญชีออมทองแบบจองราคา พร้อมรายการฝากและสลิปของแต่ละงวด

บัญชีออมแบบจองราคา: ยอดออม ยอดคงเหลือ และทุกงวดที่ฝากพร้อมสลิป (ข้อมูลตัวอย่าง)

แอปลูกค้าใน LINE

ลูกค้าเปิดแอปจาก LINE Official Account ของร้าน ลงทะเบียนครั้งแรกด้วยเบอร์โทร จากนั้นก็ดูบัญชีออมกับตั๋วจำนำของตัวเอง และส่งสลิปโอนเงินได้จากในแอป หรือจะส่งรูปสลิปในแชทเฉย ๆ ก็ได้

ทุกครั้งที่ฝากเงินเข้า เปิดบัญชี ส่งทอง หรือตั๋วจำนำใกล้ครบกำหนด ลูกค้าจะได้ข้อความจากร้านทาง LINE

แอปลูกค้าใน LINE: หน้ารวมบัญชี และหน้ารายละเอียดบัญชีออม

แอปลูกค้าใน LINE: ซ้ายคือบัญชีทั้งหมดของลูกค้า ขวาคือรายละเอียดบัญชีออมกับสลิปที่รอตรวจ (ข้อมูลตัวอย่าง)

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

ข้อความที่ลูกค้าได้รับในแชท LINE ของร้าน: ฝากเงินสำเร็จ และแจ้งเตือนครบกำหนดจำนำ (ข้อมูลตัวอย่าง)

หลังร้าน

ฝั่งพนักงานกับเจ้าของร้านใช้ระบบหลังร้านที่ทำด้วย Filament มี dashboard ดอกเบี้ยจำนำและยอดออม สรุปรายวัน รายเดือน รายปี รายงานภาษี ส่งออก Excel และค้นหาลูกค้าจากเครื่องอ่านบัตรประชาชนได้

เชื่อมกับระบบภายนอก

  • LINE Messaging API: รับรูปสลิปที่ลูกค้าส่งในแชทผ่าน webhook ระบบเก็บข้อมูลแล้วตอบ LINE ทันที ค่อยโหลดรูปและสร้างรายการสลิปทีหลัง และกันการสร้างซ้ำด้วยรหัสข้อความของ LINE ส่วนขาออกใช้ส่งแจ้งเตือนทุกเรื่องข้างบน
  • LINE LIFF: แอปลูกค้าที่เปิดใน LINE ใช้ guard แยกจากพนักงาน
  • SlipOK: ตรวจสลิปโอนเงิน ระบบไม่ปัดตกสลิปเอง สลิปที่อ่านไม่ได้จะส่งให้พนักงานดู และระบบเช็กทั้งสลิปซ้ำกับบัญชีผู้รับที่ไม่ใช่บัญชีของร้าน
  • ราคาทองประจำวัน: ดึงราคารับซื้อและขายออกทุก 5 นาที ราคาในบิล จำนำ และออมทองใช้ตัวเลขชุดนี้ทั้งหมด
  • ผู้ทำบัญชี: ดึงบิลซื้อขาย การปรับและโอนสต็อก และรายชื่อลูกค้าเป็น CSV หรือ JSON เปิดใน spreadsheet ได้ตรง ๆ ผ่านลิงก์ที่มี token ของแต่ละร้าน

หน้ารายการสลิปในระบบหลังร้าน แยกช่องทางและสถานะของแต่ละสลิป

สลิปที่รอตรวจ: ระบบบอกว่ามาจากแชท LINE หรือลูกค้าอัปโหลดเอง และผลตรวจคือปกติ ซ้ำ หรือรอพนักงานดู (ข้อมูลตัวอย่าง)

หลายร้านจากโค้ดชุดเดียว

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

ผลลัพธ์

ร้านใช้ระบบนี้มาตั้งแต่ปี 2566 และเราดูแลพัฒนาต่อทุกปีตามงานของร้าน

  • 2566 ย้ายจากระบบเดิมมาเป็น Laravel ราคาทองอัปเดตเอง ร้านที่สองเริ่มใช้ในเดือนเดียวกัน
  • 2567 หน้าจอขายแบบจอสัมผัส ระบบสต็อก และการคำนวณราคาสินค้า
  • 2568 ปรับระบบจ่ายงวดจำนำ ร้านที่สามเริ่มใช้ รับสลิปผ่าน LINE และตรวจด้วย SlipOK
  • 2569 อัปเกรดเป็น Laravel 13 กับ Filament 5 ย้าย CI/CD ไป GitHub Actions และเพิ่มชุดทดสอบครอบหน้าจอหลัก

ระบบเขียนด้วย Laravel 13 ใช้ Filament 5 กับ Livewire 4 ทำระบบหลังร้าน ใช้ Tailwind CSS ทำแอปลูกค้าใน LINE ฐานข้อมูลเป็น MariaDB งานเบื้องหลังรันบน Horizon และ CI รันชุดทดสอบ Pest ก่อน deploy ทุกครั้ง

อ่านต่อ

ล่าสุด

ดูทั้งหมด →