การเชื่อมต่อข้อมูลสต็อกสินค้า

สต็อก WMS คลังสินค้า การเชื่อมต่อข้อมูล
บทความนี้เหมาะสำหรับใคร
สำหรับนักพัฒนาที่ต้องการเชื่อมต่อ WMS หรือระบบจัดการคลังสินค้าเข้ากับ ReceiptRoller

สต็อกถูกจัดการด้วยการจับคู่ระหว่างสินค้า × คลังสินค้า สินค้าหนึ่งรายการสามารถมีสต็อกอยู่ในหลายคลังได้ โดยแต่ละคลังจะมีจำนวนสต็อกอิสระของตัวเอง การเปลี่ยนแปลงสต็อกทุกครั้งจะถูกบันทึกเป็นประวัติการรับ-จ่ายสินค้า (stock_movement) ครบทุกรายการ

ฟิลด์หลัก (inventory)

ฟิลด์ เนื้อหา
product_idสินค้าเป้าหมาย
warehouse_idคลังสินค้า
quantityจำนวนสต็อกปัจจุบัน
reservedจำนวนที่จองไว้แล้ว
availableจำนวนที่ใช้ได้ (quantity - reserved)
low_stock_thresholdค่าเกณฑ์แจ้งเตือนสต็อกต่ำ
updated_atเวลาอัปเดตล่าสุด

สโคปที่เกี่ยวข้อง

  • inventory.read — อ่านจำนวนสต็อก
  • inventory.write — อัปเดตจำนวนสต็อก (บันทึกการรับ-จ่าย)
  • warehouse.read / warehouse.write — จัดการข้อมูลหลักของคลังสินค้า

เอนด์พอยต์หลัก

GET   /v1/inventory                  ← รายการสต็อก
GET   /v1/inventory/{product_id}     ← สต็อกของสินค้าแยกตามคลัง
PATCH /v1/inventory/{product_id}     ← อัปเดตจำนวนสต็อก (แบบส่วนต่างหรือค่าสัมบูรณ์)
POST  /v1/stock_movements            ← บันทึกการรับ-จ่ายสินค้า
GET   /v1/stock_movements            ← ประวัติการรับ-จ่ายสินค้า
GET   /v1/warehouses                 ← รายการคลังสินค้า

วิธีอัปเดต (ส่วนต่าง vs ค่าสัมบูรณ์)

// เขียนทับด้วยค่าสัมบูรณ์ (เมื่อตรวจนับสต็อก)
PATCH /v1/inventory/prd_a01
{ "warehouse_id": "wh_main", "quantity": 42 }

// เพิ่มลดด้วยส่วนต่าง (เมื่อรับ-จ่ายสินค้า, แนะนำ)
POST /v1/stock_movements
{
  "product_id": "prd_a01",
  "warehouse_id": "wh_main",
  "delta": -3,
  "reason": "sale",
  "reference_id": "rcp_xyz789"
}

การระบุแบบส่วนต่างจะช่วยลดโอกาสการชนกันของการอัปเดตพร้อมกัน และยังเก็บประวัติไว้ จึงเป็นวิธีที่แนะนำ

เหตุการณ์ Webhook

  • inventory.changed — จำนวนสต็อกเปลี่ยนแปลง
  • inventory.low_stock — ต่ำกว่าค่าเกณฑ์
  • inventory.out_of_stock — สต็อกหมด
  • stock_movement.created — บันทึกการรับ-จ่ายสินค้า

รูปแบบการเชื่อมต่อ WMS

ให้ WMS เป็นหลัก (แนะนำ)

  • WMS เป็นแหล่งข้อมูลสต็อกที่ถูกต้อง
  • ซิงค์โดย POST stock_movement เข้ามาที่ ReceiptRoller
  • ตั้งค่าไม่ให้ฝั่ง ReceiptRoller หักสต็อกอัตโนมัติเมื่อออกใบเสร็จ

ให้ ReceiptRoller เป็นหลัก

  • ReceiptRoller เป็นแหล่งข้อมูลสต็อกที่ถูกต้อง (เหมาะกับร้านขนาดเล็ก)
  • หักสต็อกอัตโนมัติเมื่อออกใบเสร็จผ่านการเชื่อมต่อ POS
  • WMS ติดตามการเปลี่ยนแปลงผ่าน Webhook inventory.changed

วิธีใช้การจอง (reserved)

ในกรณีที่การรับออเดอร์ EC ต้องการกันสต็อกชั่วคราว เช่น「ใส่ตะกร้าแล้ว」「ก่อนชำระเงิน」ให้เพิ่มค่า reserved ไว้ก่อน เมื่อชำระเงินเสร็จให้หักออกจาก quantity และถ้ายกเลิกให้คืนค่า reserved กลับ

คู่มือที่เกี่ยวข้อง

วันที่เผยแพร่: 2569-04-27 วันที่อัปเดต: 2569-07-05