Lab 7 · ทฤษฎีที่เกี่ยวข้อง: บทที่ 7

Inventory App: Routes, Transfers และการนับสต็อก

Lab สุดท้าย — สำรวจกลไก multi-step routes ของ Odoo ที่เทียบเท่า one-step/two-step procedure ในทฤษฎี ทำ Internal Transfer ระหว่าง location และปิดท้ายด้วยการนับสต็อกจริง

🎯
เป้าหมาย: ตั้งค่า Receipt แบบหลายขั้นตอน ทำ Internal Transfer ระหว่าง location ทดลอง Scrap และทำ Inventory Adjustment

1Routes: One-Step, Two-Step, Three-Step Receipt

ขั้นตอน
  1. เปิด Inventory → Configuration → Warehouses เปิด Warehouse "WH"
  2. ดูฟิลด์ Incoming Shipments — มีตัวเลือก "Receive goods directly (1 step)", "Receive goods in input then stock (2 steps)", "Receive goods in input, quality, then stock (3 steps)"
  3. ลองเปลี่ยนเป็น "2 steps" แล้วสร้าง PO ใหม่ (เหมือน Lab 4) — สังเกตว่าตอนนี้ Purchase Order สร้างสองเอกสาร Transfer แทนที่จะเป็นหนึ่งเดียว: "Receipt" (Vendor → Input) และ "Internal Transfer" (Input → Stock)
เทียบกับ One-Step/Two-Step Procedure (บทที่ 7)
ค่าตั้งต้น "1 step" ของ Odoo ตรงกับ One-Step Procedure ในทฤษฎีเป๊ะ ๆ — รับเข้าคลังหลักทันทีในขั้นตอนเดียว ค่า "2 steps" ตรงกับ Two-Step Procedure — ขั้นแรกวัสดุเข้าสู่ location "Input" (เทียบเท่าสถานะ In Transit ในทฤษฎี) ขั้นที่สองย้ายจาก Input เข้า Stock จริง (เทียบเท่าเปลี่ยนจาก in-transit เป็น unrestricted use) ส่วน "3 steps" เพิ่ม location "Quality Control" คั่นกลาง ตรงกับสถานะ In Quality Inspection ในบทที่ 4a/7 พอดี — Odoo แปลงแนวคิด "สถานะ" ของ SAP ให้กลายเป็น "ตำแหน่งทางกายภาพ" (location) ตามที่อธิบายไว้ใน Lab 2

2Internal Transfer ≈ Stock Transfer

ขั้นตอน
  1. เปิด Inventory → Operations → Transfers → New
  2. เลือก Operation Type = "Internal Transfers"
  3. Source Location = WH/Stock, Destination Location = "Shelf A1" (ที่สร้างไว้ใน Lab 2)
  4. เพิ่มบรรทัดสินค้า "Bicycle Frame — Aluminum" จำนวน 10 หน่วย แล้วกด Validate
เทียบกับ Storage Location → Storage Location Transfer (บทที่ 7)
เพราะการย้ายนี้อยู่ภายใน Warehouse เดียวกัน (ไม่ข้าม plant/company) จึงไม่มีผลกระทบทางบัญชี — ตรวจสอบได้จริงโดยเปิด Accounting → Journal Entries กรองช่วงเวลาที่เพิ่งทำ Internal Transfer จะไม่พบ Journal Entry ใหม่เกิดขึ้นเลย ตรงกับทฤษฎีที่ว่าการย้ายในระดับ storage location ไม่กระทบการตีมูลค่า (เว้นแต่มี split valuation)

3Multi-Warehouse Transfer ≈ Plant-to-Plant Transfer

ถ้าต้องการทดลองเทียบกับ Plant-to-Plant Transfer เต็มรูปแบบ ให้สร้าง Warehouse ที่สองใน Configuration → Warehouses → New (เช่น "WH2 — Chiang Mai Branch") แล้วลองสร้าง Internal Transfer ระหว่างสอง warehouse — คราวนี้ให้เปิด Accounting → Journal Entries ดูอีกครั้ง

ข้อสังเกต: Odoo Community ไม่บังคับสร้าง FI Document แบบ SAP เสมอไป
ทฤษฎีบทที่ 7 อธิบายว่า Plant-to-Plant Transfer ต้องมีผล FI เสมอ (เพราะวัสดุตีมูลค่าที่ระดับ plant) — ใน Odoo, การย้ายระหว่าง Warehouse จะสร้างผลบัญชีก็ต่อเมื่อ Warehouse นั้นตั้งค่าให้อยู่คนละ Location ทางบัญชี (Valuation) เท่านั้น ถ้าทั้งสอง Warehouse อยู่ใต้ Company เดียวกันและใช้ Costing Method เดียวกัน Odoo อาจไม่สร้าง journal entry ให้เสมอไป — เป็นอีกจุดที่ Community edition ทำให้ง่ายขึ้นแต่สูญเสียความละเอียดที่ SAP มี ผู้เรียนควรเห็นความต่างนี้และเข้าใจว่าธุรกิจจริงที่มีหลาย legal entity มักต้องพึ่ง multi-company + intercompany journal ในรุ่น Enterprise หรือปรับแต่งเพิ่มเติม

4Scrap ≈ Goods Issue แบบไม่มีเอกสารอ้างอิง

เปิด Inventory → Operations → Scrap เลือกสินค้าที่เสียหาย ระบุจำนวน แล้วยืนยัน — เทียบเท่ากับ Goods Issue แบบ Scrap ที่กล่าวถึงในบทที่ 7 (ไม่มีเอกสารอ้างอิงอย่าง sales order/production order) ตรวจ Journal Entry ที่เกิดขึ้น จะเห็นบัญชี Inventory ถูกเครดิต และมักมีบัญชี "Inventory Loss" หรือคล้ายกันถูกเดบิต

5Physical Inventory ≈ Initial Receipt / Stock Count

ขั้นตอน
  1. เปิด Inventory → Operations → Physical Inventory (หรือหน้า Product แล้วกด "Update Quantity")
  2. เลือกสินค้าที่ต้องการนับสต็อก ป้อนจำนวนที่นับได้จริง
  3. กด Apply — Odoo สร้าง Inventory Adjustment ให้อัตโนมัติ (ปรับส่วนต่างระหว่างจำนวนในระบบกับจำนวนที่นับได้จริง)
เทียบกับทฤษฎี
กลไกนี้เทียบเท่ากับ Initial Receipt of Inventory ที่กล่าวถึงในบทที่ 7 (ตอนติดตั้งระบบครั้งแรก) และยังใช้สำหรับ Cycle Counting ตามปกติได้ด้วย — ส่วนต่างที่พบระหว่างสต็อกจริงกับสต็อกในระบบจะถูกโพสต์เข้าบัญชี Inventory และบัญชี "Inventory Adjustment" โดยอัตโนมัติ

6สรุปการเทียบคำศัพท์ — และสรุปทั้งวิชา

แนวคิดทฤษฎี (บทที่ 7)ฟีเจอร์ใน Odoo
Stock Status (Unrestricted/Inspection/Blocked/In Transit)Location ต่างกัน (WH/Stock, WH/Quality Control, WH/Input)
One-Step / Two-Step ProcedureRoute setting: "1 step" / "2 steps" / "3 steps"
Storage Location → Storage Location TransferInternal Transfer ภายใน Warehouse เดียว
Plant → Plant TransferInternal Transfer ข้าม Warehouse (ผลบัญชีขึ้นกับการตั้งค่า valuation)
Goods Issue (Scrap/Sampling/Consumption)Scrap operation
Initial Receipt of InventoryInventory Adjustment / Update Quantity
ภาพรวมทั้งวิชา ณ จุดนี้
ตลอดเจ็ด Lab ที่ผ่านมา คุณได้จำลองวงจรธุรกิจครบ: ติดตั้งระบบและตั้ง Master Data (Lab 1-2) → ขายสินค้าและรับเงิน (Lab 3) → ซื้อวัตถุดิบและจ่ายเงิน (Lab 4) → ผลิตสินค้าจาก BOM (Lab 5) → ตรวจสอบร่องรอยทางบัญชีของทุกธุรกรรม (Lab 6) → บริหารการเคลื่อนไหวและความถูกต้องของสต็อก (Lab 7) — ครบทั้งเก้ากระบวนการทางธุรกิจทั่วไปที่กล่าวถึงในบทที่ 2 (Procurement, Production, Fulfillment, Material Planning, IWM, และเชื่อมกับ FI/CO ตลอดทาง) เพียงแต่ทำผ่าน Odoo ที่เข้าถึงได้ฟรี แทนที่จะเป็น SAP ที่ใช้สอนภาคทฤษฎี
เช็คลิสต์จบคอร์ส Lab
  • ทดลอง Route ทั้งสามแบบ (1/2/3 steps) และอธิบายความต่างได้
  • ทำ Internal Transfer ภายใน Warehouse เดียวสำเร็จ พร้อมยืนยันว่าไม่มีผลบัญชี
  • ทำ Scrap operation สำเร็จอย่างน้อยหนึ่งครั้ง
  • ทำ Inventory Adjustment สำเร็จอย่างน้อยหนึ่งครั้ง
  • สรุปได้ว่าตลอดคอร์ส Lab นี้ ครอบคลุมกระบวนการทางธุรกิจทั่วไปข้อใดบ้างจากบทที่ 2