การทำงานของระบบคลังวัตถุดิบ
คู่มือภาพรวม: กลไกการเคลื่อนไหวของสต๊อกทั้งสองรูปแบบ โครงสร้างข้อมูล และหน้าที่ของแต่ละหน้าในระบบ
กลไกการทำงานสองส่วนที่แยกจากกัน
ระบบคลังวัตถุดิบแบ่งการทำงานออกเป็นสองกระบวนการที่เป็นอิสระต่อกัน ได้แก่ (1) การตัดสต๊อกอัตโนมัติ ซึ่งวัตถุดิบจะถูกหักออกเองเมื่อมีการขายเมนู โดยขับเคลื่อนผ่านระบบ event และ (2) การจัดซื้อ ซึ่งวัตถุดิบจะถูกนำเข้าคลังเมื่อพนักงานดำเนินการขอซื้อและสั่งซื้อ เพียงทำความเข้าใจว่ากำลังพิจารณากระบวนการใดอยู่ ก็จะเห็นภาพรวมทั้งหมดได้โดยง่าย
วัตถุดิบออก — การตัดสต๊อกอัตโนมัติ
ทำงานโดยอัตโนมัติผ่านระบบ event โดยไม่ต้องมีผู้ดำเนินการ เมื่อมีการขายเมนู วัตถุดิบจะถูกหักออกผ่าน message bus ทันที
ลูกค้าสั่งอาหาร
ระบบ Order หรือ POS ส่ง event พร้อมรหัสสาขา (branch_id)
Kitchen Worker ประมวลผล
สร้างตั๋วครัว แล้วส่ง event kitchen.ticket_created ต่อไปยังระบบคลัง
อ่านสูตรการผลิต (BOM)
Inventory Worker สอบถาม Catalog ว่าเมนูนี้ใช้วัตถุดิบใดและในปริมาณเท่าใด
ตัดสต๊อก บันทึก และแจ้งเตือน
หักสต๊อกทั้งระดับสาขาและยอดรวม บันทึกรายการประเภท DEDUCTION และแจ้งเตือนเมื่อปริมาณคงเหลือต่ำกว่าจุดสั่งซื้อ
วัตถุดิบเข้า — การจัดซื้อ
กระบวนการจัดทำเอกสารที่พนักงานดำเนินการเอง เพื่อนำวัตถุดิบเข้าสู่คลัง
ใบขอซื้อ (PR)
คำขอวัตถุดิบภายในองค์กร ส่งเพื่อขออนุมัติ ก่อนพิจารณาอนุมัติหรือปฏิเสธ
ใบสั่งซื้อ (PO)
ใบขอซื้อที่ได้รับอนุมัติจะถูกแปลงเป็นคำสั่งซื้อเพื่อจัดส่งให้ซัพพลายเออร์
รับวัตถุดิบเข้า
เมื่อวัตถุดิบมาถึง ตรวจรับทั้งหมดหรือบางส่วนโดยเทียบกับใบสั่งซื้อ
สต๊อกเพิ่มขึ้น
บันทึกรายการประเภท RESTOCK และปริมาณคงเหลือจะเพิ่มขึ้นตามจำนวนที่รับ
โครงสร้างข้อมูล — ความสัมพันธ์ระหว่างตาราง
RawMaterial (วัตถุดิบ)
ข้อมูลหลักของวัตถุดิบ โดย current_stock คือยอดรวมทั้ง tenant (ค่า cache) ส่วนสูตร BOM จัดเก็บอยู่ที่ Catalog เชื่อมโยงผ่าน catalog_ingredient_id
MaterialStock (รายสาขา)
ปริมาณคงเหลือจริงในแต่ละคลังหรือสาขา ถือเป็นยอดอ้างอิงหลัก ในขณะที่ current_stock เป็นเพียงผลรวม
ซัพพลายเออร์และราคา
ผู้ขายเชื่อมโยงกับวัตถุดิบผ่าน SupplierMaterial ซึ่งจัดเก็บราคาและระยะเวลาจัดส่ง (lead time)
ใบขอซื้อ / ใบสั่งซื้อ และรายการ
เอกสารในกระบวนการจัดซื้อ โดยใบสั่งซื้อสามารถเชื่อมโยงกลับไปยังใบขอซื้อต้นทางได้ผ่าน pr_id
StockTransaction (บันทึกรายการ)
ทุกการเคลื่อนไหวจะถูกบันทึกไว้ ได้แก่ RESTOCK / DEDUCTION / ADJUSTMENT / WASTE โดยหน้ารายการเดินสต๊อกแสดงผลจากตารางนี้
หน้าที่ของแต่ละหน้า
| หน้า | หน้าที่ |
|---|---|
| รายการเดินสต๊อก | feed แสดงทุกรายการเคลื่อนไหวแบบเรียลไทม์ (เข้า/ออก) |
| สต๊อกคงเหลือ | ปริมาณคงเหลือรายสาขา ณ ปัจจุบัน |
| แจ้งเตือนสต๊อก | วัตถุดิบที่มีปริมาณต่ำกว่าจุดสั่งซื้อ |
| วัตถุดิบ | ข้อมูลหลัก จุดสั่งซื้อ และหน่วยจัดซื้อ |
| ซัพพลายเออร์ | ผู้ขายและราคาของวัตถุดิบแต่ละรายการ |
| ใบขอซื้อ | คำขอซื้อภายในองค์กรและกระบวนการอนุมัติ |
| ใบสั่งซื้อ | การสั่งซื้อจากซัพพลายเออร์และการรับเข้า |
| บันทึกของเสีย | วัตถุดิบที่สูญเสียและต้นทุนที่เกิดขึ้น |
| ตั้งค่าหน่วยซื้อ | ผู้จัดการ — กำหนดหน่วยการสั่งซื้อและจุดสั่งซื้อของวัตถุดิบแต่ละรายการ |
หน้าตาของแต่ละหน้า
ภาพจริงจากระบบ คลิกที่ภาพเพื่อดูขนาดเต็ม
รายการเดินสต๊อก
รายการเดินสต๊อกทั้งหมดในที่เดียว ทั้งที่ระบบตัดอัตโนมัติจากออร์เดอร์และที่บันทึกเอง เรียงล่าสุดขึ้นก่อนและกรองตามสาขาได้
สต๊อกคงเหลือ
สต๊อกคงเหลือแยกตามสาขา ยอดรวมทั้งร้านคือผลรวมของทุกสาขา แต่ยอดที่ครัวใช้จริงคือยอดของสาขานั้น
แจ้งเตือนสต๊อก
วัตถุดิบที่เหลือถึงหรือต่ำกว่าจุดสั่งซื้อ ใช้ดักของขาดให้เจอก่อนถึงเวลาขาย
วัตถุดิบ
ข้อมูลหลักของวัตถุดิบ ทั้งหน่วยนับ จุดสั่งซื้อ และวัตถุดิบในแคตตาล็อกที่ผูกไว้ สูตรอาหารจะตัดสต๊อกจากรายการเหล่านี้
บันทึกของเสีย
บันทึกของเสีย ทั้งแบบระบุวัตถุดิบและแบบระบุเป็นจาน ถ้าบันทึกเป็นจานระบบจะไล่สูตรแล้วตัดวัตถุดิบจริงให้ ของเสียกับสต๊อกจึงตรงกันเสมอ
ทดลองใช้งานด้วยตนเอง
ระบบได้เตรียมข้อมูลตัวอย่างไว้แล้ว สามารถทำตามขั้นตอนต่อไปนี้เพื่อทดสอบการทำงานของกลไกทั้งสองส่วน
- 1
เปิดหน้าสต๊อกคงเหลือ และจดปริมาณหมูสับคงเหลือไว้
- 2
ไปที่ POS สั่งเมนูที่ใช้หมูสับ (เช่น ผัดกะเพราหมู) แล้วชำระเงิน
- 3
กลับมายังหน้ารายการเดินสต๊อก จะพบรายการ DEDUCTION เพิ่มขึ้นและปริมาณหมูสับลดลง นี่คือการทำงานของกลไกที่หนึ่ง
- 4
เปิดใบขอซื้อหมายเลข PRQ-…00002 (สถานะรออนุมัติ) กดอนุมัติ จากนั้นสร้างใบสั่งซื้อ
- 5
เปิดใบสั่งซื้อ กดส่ง แล้วกดรับเข้า ปริมาณคงเหลือจะเพิ่มขึ้น นี่คือการทำงานของกลไกที่สอง