STAX · STORE · INVENTORY

วิธีสร้างสต๊อก

คู่มือสั้น ๆ ครอบ 3 วิธีรับสินค้าเข้าสต๊อกใน Stax — ใช้ได้ทั้งร้านที่ ขายเป็นชิ้น, ขายเป็นลัง, หรือทั้งสองอย่าง · ทุกวิธีลงท้ายด้วย ล็อต FIFO ที่ระบบจะตัดเองเวลาขาย

“สต๊อก” ใน Stax = stock_batches (ล็อต) — รับครั้งเดียวคือ 1 ล็อต เก็บ วันที่รับ + ต้นทุนต่อชิ้น + วันหมดอายุ (ถ้ามี) · เวลาขาย ระบบจะเลือกล็อตที่ เก่าที่สุดก่อน (FIFO) หรือใกล้หมดอายุก่อน (FEFO ถ้าเปิด) · ตัวเลข กำไร ในรายงานคำนวณจากต้นทุนล็อตที่ถูกตัด ไม่ใช่ราคาตั้งสินค้า

3 วิธีรับสต๊อก

1
รับสต๊อกตามปกติ DEFAULT

ใช้เมื่อสินค้ามี SKU อยู่แล้ว · ใช้กรอกล็อตใหม่ ๆ ต่อ ๆ ไป

  1. เปิด /stock
  2. เลือก SKU ที่ “สินค้า” (dropdown โชว์เฉพาะสินค้าของร้าน)
  3. ใส่ จำนวนที่รับ + ต้นทุน/หน่วย
  4. กด บันทึก → ระบบสร้างล็อต FIFO ใหม่ (เช่น LOT-260523-001)
สินค้า
JUICE-250
จำนวนที่รับ
30
ต้นทุน/หน่วย (฿)
12.00
หมายเหตุ (optional)
1 ลัง @ 360
💡 ถ้าตั้ง use_fefo ที่ SKU นั้นไว้ + ใส่ วันหมดอายุ ที่ฟอร์ม ระบบจะเลือกล็อตที่ใกล้หมดอายุก่อน (ไม่ใช่ล็อตเก่าที่สุด)
2
รับเป็นลัง (สร้าง SKU ลังอัตโนมัติ) NEW ⚡

เหมาะกับสินค้าที่ ซื้อมาเป็นลัง แต่ขายได้ทั้งลังและแยกชิ้น · รวมขั้นตอน “สร้าง SKU ลัง + ตั้ง recipe + รับสต๊อกชิ้น” ให้อยู่ใน modal เดียว

  1. เปิด /stock
  2. กดปุ่ม “รับเป็นลัง” มุมขวาบนของฟอร์ม → modal เปิด
  3. เลือก SKU ชิ้น (component) → ระบบ auto-suggest {SKU}-BOX และชื่อ “{name} (ลัง)” ให้
  4. ใส่ จำนวนชิ้น/ลัง, จำนวนลัง, ต้นทุนรวม · ระบบโชว์ ฿/ชิ้น ให้ดูข้างใต้
  5. (ถ้ามี) ใส่ ราคาขายปลีก/ขายส่ง ลัง
  6. กด “สร้าง SKU ลัง + รับสต๊อก” → ระบบทำทุกอย่างในขั้นเดียว
SKU ชิ้น
JUICE-250
จำนวนชิ้น/ลัง
30
รับมาทั้งหมด (ลัง)
1
ต้นทุนรวม (฿)
360.00
SKU ลัง (auto)
JUICE-250-BOX
ราคาขายลัง / ปลีก (optional)
600 / 480
ทำเสร็จแล้วจะได้ทั้ง 3 อย่างพร้อมกัน: SKU ลังใหม่ JUICE-250-BOX + recipe (1 ลัง = 30 ชิ้น) + ล็อต FIFO 30 ชิ้นที่ 12 ฿/ชิ้น
3
รับผ่านใบสั่งซื้อ (Purchase Order) B2B

เหมาะกับร้านที่สั่งของจาก ซัพพลายเออร์เป็นรอบ · มีหลักฐาน (PO เลขที่) + ผูก supplier_id ทำให้ รายงาน “ต้นทุนตามซัพพลายเออร์” ใน /reports ทำงานได้

  1. เปิด /purchase-orders/new
  2. เลือก ซัพพลายเออร์ + ใส่ SKU + จำนวน + ต้นทุน → กด “บันทึก PO” (ยังไม่รับของจริง)
  3. กลับมาที่ /purchase-orders/[id] เมื่อของมาถึง → กด “รับเข้า”
  4. ระบบสร้าง stock_batches ให้อัตโนมัติ (lot_code = PO-YYMMDD-NNN-XXXX) เข้า FIFO pool ทันที
💡 ใช้ PO ดีกว่า /stock โดยตรงเมื่อต้องการ ตามรอบสั่ง (PO ออก → ส่ง email/LINE → ของยังไม่มา → รับ partial → จ่ายเงินทีหลัง) · ถ้าซื้อจากตลาดสดที่ไม่มี PO ใช้วิธี 1 หรือ 2 ก็พอ

เทคนิคที่ควรรู้

🔢 Lot code คืออะไร

รหัสประจำล็อต — ระบบสุ่มให้ LOT-YYMMDD-NNN แต่แก้ได้ ใส่เป็น invoice number ของซัพพลายเออร์ก็ได้ · ใช้ค้นใน /stock + ใน FIFO breakdown ของบิล

💰 ต้นทุนต่อชิ้น

ต้นทุนแฝง เช่น ค่าขนส่ง, แพ็คเกจ, ภาษี → รวมเข้าต้นทุน/หน่วยก่อนกรอก · กำไรในรายงาน ใช้ตัวนี้ หักจากราคาขาย → ใส่ผิดคือกำไรเพี้ยน

📅 วันหมดอายุ + FEFO

เปิด use_fefo = true ที่ /products → ระบบเลือกล็อต ใกล้หมดอายุก่อน แทน FIFO · เหมาะกับนม/อาหาร/ยา

📊 FIFO ทำงานยังไง

ขาย 10 ชิ้น · ล็อต A เหลือ 6, ล็อต B เหลือ 50 → ตัด A 6 + B 4 · ต้นทุนบิลคำนวณตามที่ตัดจริง · ดูได้ที่ /orders/[id] → “FIFO breakdown”

กับดักที่พบบ่อย

รับสต๊อกเป็น “ลัง” ตรง ๆ จะเกิดอะไร?
ถ้า SKU ลังเป็น composite (วิธี 2) → รับที่ระดับลังจะทำให้ stock_batches อยู่ที่ลังโดยตรง ซึ่งระบบไม่ expand เวลาขายแยกชิ้นได้ — สต๊อกจะเพี้ยน · รับที่ระดับชิ้นเสมอ
รับเข้าแล้วลืมใส่ต้นทุน — แก้ได้ไหม?
แก้ที่ /stock → ไปแถวล็อตนั้น → กดแก้ไข (ถ้า batch ยังไม่มีบิลตัดไป) · ถ้ามีบิลตัดไปแล้ว จะส่งผลย้อนหลังกับกำไรในรายงาน — แก้ได้แต่ต้องระวัง
เห็นล็อตที่ยังเหลือใน /stock แต่หน้า /products สต๊อกเป็น 0?
ถ้าเป็น SKU ลัง composite — stock ลัง = floor(stock ชิ้น ÷ recipe.qty) · 22 ชิ้น ÷ 30 = 0 ลัง · รับชิ้นเพิ่ม 8 = ลังกลับมา 1 ทันที
บาร์โค้ดสแกนแล้วเข้าผิด SKU?
ตรวจว่ามี บาร์โค้ดซ้ำระหว่าง 2 SKU หรือไม่ (เช่นใส่บาร์โค้ดเดียวกันที่ JUICE-250 และ JUICE-250-BOX) → ลบบาร์โค้ดของอันที่ไม่ต้องการ ที่ tab “ราคา + บาร์โค้ด”