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
ขั้นตอน
- เปิด Inventory → Configuration → Warehouses เปิด Warehouse "WH"
- ดูฟิลด์ Incoming Shipments — มีตัวเลือก "Receive goods directly (1 step)", "Receive goods in input then stock (2 steps)", "Receive goods in input, quality, then stock (3 steps)"
- ลองเปลี่ยนเป็น "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 22Internal Transfer ≈ Stock Transfer
ขั้นตอน
- เปิด Inventory → Operations → Transfers → New
- เลือก Operation Type = "Internal Transfers"
- Source Location = WH/Stock, Destination Location = "Shelf A1" (ที่สร้างไว้ใน Lab 2)
- เพิ่มบรรทัดสินค้า "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
ขั้นตอน
- เปิด Inventory → Operations → Physical Inventory (หรือหน้า Product แล้วกด "Update Quantity")
- เลือกสินค้าที่ต้องการนับสต็อก ป้อนจำนวนที่นับได้จริง
- กด 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 Procedure | Route setting: "1 step" / "2 steps" / "3 steps" |
| Storage Location → Storage Location Transfer | Internal Transfer ภายใน Warehouse เดียว |
| Plant → Plant Transfer | Internal Transfer ข้าม Warehouse (ผลบัญชีขึ้นกับการตั้งค่า valuation) |
| Goods Issue (Scrap/Sampling/Consumption) | Scrap operation |
| Initial Receipt of Inventory | Inventory 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