Lab 4 · ทฤษฎีที่เกี่ยวข้อง: บทที่ 4a/4b

Purchase App: Requisition ถึง Payment ใน Odoo

RFQ → Purchase Order → Receipt → Vendor Bill → Payment — ฝั่งตรงข้ามของ Lab 3 พอดี บริษัทเดียวกันสวมบทบาท "ผู้ซื้อ" แทน "ผู้ขาย"

🎯
เป้าหมาย: สร้างและยืนยัน RFQ/PO หนึ่งใบ รับสินค้าเข้าคลัง สร้าง Vendor Bill พร้อมตรวจสอบ 3-way match และบันทึกจ่ายเงิน

1Request for Quotation (RFQ) → Purchase Order

ขั้นตอน
  1. เปิดแอป Purchase → New
  2. เลือก Vendor = "Spy Gear Supplies" (จาก Lab 2)
  3. เพิ่มบรรทัด: "Bicycle Frame — Aluminum" จำนวน 100 ชิ้น
  4. สังเกตสถานะเอกสาร RFQ (Request for Quotation) — เทียบเท่าขั้นตอนก่อน Order Processing ในบทที่ 4b ที่ยังไม่มีข้อผูกพัน
  5. กด Confirm Order — สถานะเปลี่ยนเป็น Purchase Order
จุดที่ Odoo รวบขั้นตอนเข้าด้วยกัน
ทฤษฎีบทที่ 4b แยก Requirements Determination (สร้าง Purchase Requisition) ออกจาก Source of Supply Determination (เลือกซัพพลายเออร์) และ Order Processing (สร้าง PO) เป็นสามขั้นตอนต่างกัน — Odoo ไม่มี object "Purchase Requisition" แยกต่างหากใน Community edition (มีเพิ่มเติมผ่านโมดูล "Purchase Requisition/Requests" ที่ต้องติดตั้งเสริม) ปกติผู้ใช้ Odoo จะสร้าง RFQ ตรงจากความต้องการเลย ข้ามขั้นตอน "คำขอที่ยังไม่ผูกกับซัพพลายเออร์" ไปเลย — เป็นตัวอย่างที่ดีของการที่ระบบ ERP แบบเบากว่าตัดขั้นตอนที่ไม่จำเป็นสำหรับธุรกิจขนาดเล็ก-กลางออกไป

2Receipt ≈ Goods Receipt

ขั้นตอน
  1. จาก Purchase Order ที่ confirm แล้ว คลิกปุ่ม Receipt (smart button)
  2. ดูเอกสาร Receipt (Stock Picking ประเภท Incoming) — เทียบเท่า Goods Receipt ในบทที่ 4b
  3. กด Validate
ตรวจผลลัพธ์ทางบัญชี
ไปที่ Inventory → Reporting → Valuation หรือ Accounting → Journal Entries — จะเห็นรายการที่ตรงกับทฤษฎีบทที่ 4b: บัญชี Stock/Inventory ถูกเดบิต คู่กับบัญชี Stock Interim (Received) ที่ถูกเครดิต ซึ่งเทียบเท่ากับบัญชี GR/IR ของ SAP ที่อธิบายในทฤษฎี — บัญชีนี้จะถูกเคลียร์เมื่อสร้าง Vendor Bill ในขั้นถัดไป (เทียบเท่าตอน Invoice Verification เดบิตปิดยอด GR/IR)

3Vendor Bill ≈ Invoice Verification (Three-Way Match)

ขั้นตอน
  1. กลับไปที่ Purchase Order กด Create Bill
  2. ตรวจสอบว่าปริมาณในบิลตรงกับปริมาณที่ระบุใน PO และปริมาณที่รับจริงจาก Receipt
  3. กด Confirm
Bill Control: กลไก Three-Way Match ของ Odoo
ไปที่ Purchase → Configuration → Settings ดูตัวเลือก Bill Control — ถ้าตั้งเป็น "Ordered quantities" ระบบจะยอมให้สร้าง bill ตามปริมาณที่สั่งได้เลย (คล้าย Two-Way Match: PO+Invoice) ถ้าตั้งเป็น "Received quantities" ระบบจะบังคับให้ bill อ้างอิงปริมาณที่รับจริงเท่านั้น (เทียบเท่า Three-Way Match เต็มรูปแบบ: PO + Receipt + Invoice ตามทฤษฎีบทที่ 4b) — ลองเปลี่ยนการตั้งค่านี้แล้วสังเกตพฤติกรรมที่เปลี่ยนไปเมื่อพยายามสร้าง bill ก่อน validate receipt
ทดลอง: จงใจให้ปริมาณไม่ตรงกัน
ลองแก้ Receipt ให้รับของจริงแค่ 95 ชิ้น (จาก PO ที่สั่ง 100) แล้วสร้าง Vendor Bill ด้วยการตั้งค่า Bill Control = "Received quantities" — สังเกตว่า Odoo จะเสนอบิลตามยอดที่รับจริง (95) ไม่ใช่ยอดที่สั่ง (100) โดยอัตโนมัติ — นี่คือกลไก Three-Way Match ที่ทำงานจริง ตรงกับสิ่งที่ทฤษฎีบทที่ 4b อธิบายว่า "ตรวจสอบว่าปริมาณและราคาตรงกันทั้งสามเอกสาร"

4Register Payment

เปิด Vendor Bill ที่ confirm แล้ว กด Register Payment — ตรวจ Journal Items จะเห็นบัญชี Accounts Payable ถูกเดบิต และบัญชี Bank ถูกเครดิต ตรงกับทฤษฎีบทที่ 4b พอดี (ทิศทางตรงข้ามกับฝั่ง Fulfillment ใน Lab 3 เพราะตอนนี้บริษัทเป็น "ลูกหนี้" ไม่ใช่ "เจ้าหนี้")

5สรุปการเทียบคำศัพท์

ขั้นตอนทฤษฎี (บทที่ 4b)ปุ่ม/เอกสารใน Odoo
Requirements Determination (Purchase Requisition)ไม่มีใน Community โดยตรง — ข้ามไปสร้าง RFQ เลย
Source of Supply Determinationเลือก Vendor ตอนสร้าง RFQ
Order Processingปุ่ม Confirm Order (RFQ → PO)
Goods ReceiptReceipt (Stock Picking) + ปุ่ม Validate
Invoice Verification (Three-Way Match)Create Bill + การตั้งค่า Bill Control
Payment Processingปุ่ม Register Payment
เช็คลิสต์ก่อนไป Lab 5
  • สร้างและ confirm PO สำเร็จหนึ่งใบ
  • Validate Receipt สำเร็จ และเห็นสต็อกวัตถุดิบเพิ่มขึ้น
  • ทดลองตั้งค่า Bill Control ทั้งสองแบบและสังเกตความต่าง
  • สร้าง Vendor Bill และ Register Payment สำเร็จ
  • อธิบายความต่างของทิศทางเดบิต/เครดิตระหว่าง Lab 3 (Fulfillment) กับ Lab 4 (Procurement) ได้