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

Sales App: ตาม Order-to-Cash ทีละขั้นใน Odoo

Quotation → Sales Order → Delivery → Invoice → Payment — Lab นี้ทำให้ครบวงจร Fulfillment เต็มรูปแบบหนึ่งรอบ แล้ววิเคราะห์ว่าแต่ละปุ่มที่กดจริงตรงกับขั้นตอนไหนในบทที่ 3b

🎯
เป้าหมาย: สร้างและยืนยัน Sales Order หนึ่งใบ ส่งมอบสินค้า ออกใบแจ้งหนี้ และบันทึกรับชำระเงิน ครบวงจร

1สร้าง Quotation → Sales Order

ขั้นตอน
  1. เปิดแอป Sales → New
  2. เลือก Customer = "Rocky Mountain Bikes" (จาก Lab 2)
  3. เพิ่มบรรทัดสินค้า: "Touring Bike 350" จำนวน 5 คัน
  4. สังเกตว่าเอกสารนี้ยังมีสถานะ Quotation อยู่มุมบนซ้าย — เทียบเท่า Quotation ใน Presales Activity บทที่ 3b (ยังไม่ผูกพันอะไร)
  5. กดปุ่ม Confirm — สถานะเปลี่ยนเป็น Sales Order พร้อมเลขที่เอกสาร (เช่น S00001)
เทียบกับทฤษฎีบทที่ 3b
การกด Confirm ทำหน้าที่เดียวกับ Sales Order Processing ในบทที่ 3b — Odoo ทำ Availability Check ให้อัตโนมัติทันที (ดูแถบสีในบรรทัดสินค้า: เขียว = พร้อมส่ง, เหลือง/แดง = ไม่พร้อม) เทียบเท่ากับกลไก Availability Check ที่อธิบายในทฤษฎี แต่ Odoo ไม่มีแนวคิด "Backward Scheduling" ที่ซับซ้อนเท่า SAP — มันคำนวณวันจัดส่งแบบตรงไปตรงมาจาก Lead Time ที่ตั้งไว้ในสินค้าเท่านั้น
ถ้าสินค้าไม่มีในสต็อก
ถ้า "Touring Bike 350" ยังไม่มีสต็อกเลย (Lab 2 อาจไม่ได้ตั้งสต็อกเริ่มต้น) ให้ไปที่ Inventory app ก่อน แล้วทำ Inventory Adjustment เพิ่มสต็อกเริ่มต้น 20 คัน — เทียบเท่ากับ "Initial Receipt of Inventory" ที่กล่าวถึงในบทที่ 7 (การรับเข้าครั้งแรกตอนติดตั้งระบบ)

2Delivery ≈ Shipping

เมื่อ Sales Order ยืนยันแล้ว จะเห็นปุ่ม Delivery ปรากฏที่มุมบนของฟอร์ม (smart button) — คลิกเข้าไป

ขั้นตอน
  1. ดูเอกสาร Delivery (Stock Picking) ที่ Odoo สร้างให้อัตโนมัติ — เทียบเท่า Delivery Document ในบทที่ 3b
  2. สังเกต Source Location (WH/Stock) และ Destination Location (Customer Location) — เทียบเท่าการระบุ ship-to party และ plant/storage location ที่ delivery document ต้องมี
  3. กดปุ่ม Check Availability ถ้ายังไม่ reserve อัตโนมัติ
  4. กดปุ่ม Validate — นี่คือขั้นตอนที่สำคัญที่สุดของ Lab นี้
Validate ใน Odoo = สองขั้นตอนของทฤษฎีรวมกัน
ปุ่ม Validate ใน Odoo ทำหน้าที่ของทั้ง Picking และ Post Goods Issue พร้อมกันในคลิกเดียว — ต่างจาก SAP ที่แยก picking (สร้าง transfer order ใน Warehouse Management) ออกจาก post goods issue เป็นสองขั้นตอนชัดเจน (บทที่ 3b) หลัง Validate ตรวจดูที่ Inventory → Reporting → Valuation จะเห็นว่าปริมาณและมูลค่าสต็อกลดลงทันที ตรงกับผลลัพธ์ทางบัญชีที่อธิบายไว้ในทฤษฎี (เดบิต COGS, เครดิต Inventory)

3Customer Invoice ≈ Billing

ขั้นตอน
  1. กลับไปที่ Sales Order เดิม กดปุ่ม Create Invoice
  2. เลือก "Regular Invoice" (เทียบเท่า Delivery-Based Invoicing บทที่ 3b) แล้วยืนยัน
  3. เปิดเอกสาร Invoice ที่สร้างขึ้น กดปุ่ม Confirm เพื่อ post เข้าบัญชี
ดู Journal Entry ที่เกิดขึ้นจริง
คลิกปุ่ม Journal Items บน invoice ที่ confirm แล้ว — จะเห็นสอง line item: บัญชี Accounts Receivable ถูกเดบิต และบัญชี Income (Sales Revenue) ถูกเครดิต ด้วยยอดเดียวกัน ตรงกับที่อธิบายไว้ในบทที่ 3b เป๊ะ ๆ — ลองเทียบ posting นี้กับตัวอย่างตัวเลขในบทที่ 6a (GBI ขายจักรยานให้ลูกค้า) จะเห็นว่าตรรกะเดบิต/เครดิตเหมือนกันทุกประการ แม้ระบบจะต่างกัน

4Register Payment ≈ Payment

ขั้นตอน
  1. เปิด Invoice ที่ confirm แล้ว กดปุ่ม Register Payment
  2. เลือก Payment Method (Bank/Cash) แล้วกด Create Payment
  3. สถานะ invoice เปลี่ยนจาก "Not Paid" เป็น "Paid" (หรือ "In Payment" ถ้าใช้ bank reconciliation)

ตรวจ Journal Items อีกครั้ง — จะเห็นบัญชี Bank ถูกเดบิต และบัญชี Accounts Receivable ถูกเครดิต ปิด Open Item ที่เกิดขึ้นตอน Billing พอดี ตรงกับทฤษฎีในบทที่ 3b เรื่อง Open Item และการเคลียร์ด้วยการรับชำระเงิน

5ทดลอง Credit Limit และเปรียบเทียบกับ Credit Management

กลับไปที่ Contact "Rocky Mountain Bikes" ตั้งค่า Credit Limit เป็น 10,000 บาท (แท็บ Sales) แล้วลองสร้าง Sales Order ใหม่ที่มียอดเกิน 10,000 บาท — สังเกตว่า Odoo จะเตือน (warning) แต่ไม่บล็อกการยืนยัน order

ช่องว่างที่ควรรู้จักไว้: Credit Management
นี่คือจุดที่ Odoo Community อ่อนกว่า SAP ชัดเจนที่สุดจุดหนึ่ง — บทที่ 3b อธิบายกระบวนการ Credit Management แบบเต็มรูปแบบของ SAP (credit check → delivery blocked → credit manager review → approve/reject) ส่วน Odoo Community ให้แค่คำเตือนบนหน้าจอ ไม่มีสถานะ "delivery blocked" หรือ workflow อนุมัติแยกต่างหาก (ฟีเจอร์ระดับนี้มักอยู่ใน Odoo Enterprise หรือต้องพัฒนาโมดูลเสริมเอง) — ผู้เรียนควรเข้าใจว่านี่คือตัวอย่างที่ "ระบบ ERP ที่ฟรี" กับ "ระบบ ERP เชิงพาณิชย์ระดับองค์กรใหญ่" ต่างกันจริงในเชิงความลึกของ business logic ไม่ใช่แค่หน้าตา UI

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

ขั้นตอนทฤษฎี (บทที่ 3b)ปุ่ม/เอกสารใน Odoo
Presales Activity (Quotation)Quotation (สถานะเริ่มต้นของ Sales Order)
Sales Order Processingปุ่ม Confirm
Shipping (Picking + Packing + Post Goods Issue)Delivery (Stock Picking) + ปุ่ม Validate
Billingปุ่ม Create Invoice + Confirm
Paymentปุ่ม Register Payment
Credit Management (เต็มรูปแบบ)Credit Limit warning เท่านั้น (ไม่มี block workflow ใน Community)
เช็คลิสต์ก่อนไป Lab 4
  • สร้างและ confirm Sales Order สำเร็จหนึ่งใบ
  • Validate Delivery สำเร็จ และตรวจสอบว่าสต็อกลดลงจริง
  • สร้างและ Confirm Invoice พร้อมดู Journal Items
  • Register Payment สำเร็จ และเห็นสถานะ invoice เป็น Paid
  • อธิบายได้ว่าทำไม Credit Management ใน Odoo Community ไม่เท่ากับทฤษฎีที่เรียนมา