ERP

การอ่านโค้ดโมดูลขายของ Odoo โดยใช้ Code2Flow

October 28, 2024

โมดูลขาย (Sales Module) ของ Odoo เป็นส่วนสำคัญของระบบ ERP ที่ทรงพลัง ซึ่งช่วยจัดการการประมวลผลคำสั่งซื้อ การจัดการลูกค้า และการอัปเดตสินค้าคงคลัง แต่เนื่องจากโค้ดมีขนาดใหญ่และมีความเชื่อมโยงระหว่างกันมาก การทำความเข้าใจโค้ดของโมดูลนี้อาจเป็นเรื่องที่ท้าทาย ในบทความนี้เราจะใช้ Code2Flow เพื่อสร้างภาพโครงสร้างของการเรียกใช้ฟังก์ชันต่างๆ และช่วยให้เข้าใจการทำงานของโค้ดได้ง่ายขึ้น

ทำไมต้องใช้ Code2Flow กับ Odoo?

โครงสร้างโมดูลของ Odoo ช่วยให้สามารถปรับแต่งและขยายคุณสมบัติได้หลายชั้น เช่น โมเดล (models), วิว (views), และคอนโทรลเลอร์ (controllers) ด้วยการใช้ Code2Flow เราสามารถเปลี่ยนความสัมพันธ์ที่ซับซ้อนเหล่านี้ให้เป็นแผนภาพที่เข้าใจได้ง่าย และสร้างแผนที่ของการเรียกฟังก์ชันและตรรกะในการทำงาน การใช้งาน Code2Flow มีประโยชน์โดยเฉพาะสำหรับ:

  • การนำทางในโครงสร้างโมเดล: การติดตามว่าโมเดลต่างๆ เช่น sale.order และ res.partner เชื่อมต่อกันอย่างไร
  • การติดตามการเรียกใช้เมธอด (Method Calls): ช่วยให้เห็นการเรียกใช้ฟังก์ชันและโครงสร้างการสืบทอด
  • การทำแผนที่ตรรกะการทำงาน: ช่วยให้เข้าใจขั้นตอนหลักในกระบวนการ เช่น การสร้างคำสั่งซื้อ การยืนยัน และการจัดส่งสินค้า

การตั้งค่า Code2Flow

  1. ติดตั้ง Code2Flow: ตรวจสอบให้แน่ใจว่าได้ติดตั้ง code2flow แล้ว สามารถติดตั้งได้ผ่าน pip:

    pip install code2flow
  2. ติดตั้ง Graphviz (ไม่บังคับ): Code2Flow ใช้ Graphviz ในการเรนเดอร์แผนภาพ ติดตั้งได้ด้วยคำสั่ง:

    sudo apt install graphviz

ขั้นตอนการอ่านโมดูลขายของ Odoo

มาเริ่มสำรวจส่วนประกอบหลักของโมดูลขายใน Odoo และใช้ Code2Flow ในการสร้างแผนที่โครงสร้างและความสัมพันธ์

ขั้นตอนที่ 1: วิเคราะห์ไฟล์หลักของโมดูลขาย

ไปยังไดเรกทอรี addons/sale/ ในซอร์สโค้ดของ Odoo ซึ่งจะพบไฟล์หลักดังนี้:

  • models/sale_order.py: มีตรรกะหลักของธุรกิจในโมเดล sale.order (คำสั่งซื้อ)
  • views/sale_order_view.xml: ไฟล์ XML ที่กำหนดส่วนติดต่อผู้ใช้สำหรับคำสั่งซื้อ
  • controllers/portal.py: มีเมธอดควบคุมสำหรับการทำงานบนเว็บ

แต่ละไฟล์มีบทบาทเฉพาะ การเข้าใจว่าแต่ละส่วนเชื่อมโยงกันอย่างไรเป็นขั้นตอนแรกในการเข้าใจโมดูลนี้

ขั้นตอนที่ 2: สร้างแผนภาพความสัมพันธ์ในโมเดลด้วย Code2Flow

เริ่มต้นจาก models/sale_order.py ซึ่งเป็นไฟล์ที่กำหนด sale.order และ sale.order.line Code2Flow จะช่วยสร้างแผนภาพเพื่อเข้าใจความสัมพันธ์ระหว่างเมธอดต่างๆ และจุดเริ่มต้นของฟังก์ชัน

ตัวอย่าง: สร้างแผนภาพสำหรับ sale_order.py

รัน Code2Flow บนไฟล์ sale_order.py:

code2flow models/sale_order.py -o sale_order_flowchart.png

ไฟล์ภาพที่ได้ sale_order_flowchart.png จะแสดง:

  • เมธอดของโมเดล: เมธอดเช่น create, write, และ action_confirm ซึ่งกำหนดการสร้างและการยืนยันคำสั่งซื้อ
  • การสืบทอดและการเรียกใช้งาน: Code2Flow จะแสดงว่า sale.order เชื่อมต่อกับเมธอดที่สืบทอดจาก models.Model อย่างไร

เมธอดสำคัญที่ควรสังเกต

  • create: มีตรรกะเฉพาะสำหรับการตั้งค่าคำสั่งซื้อใหม่ กำหนดหมายเลขอ้างอิงที่ไม่ซ้ำกัน และเพิ่มรายการคำสั่งซื้อ
  • action_confirm: กำหนดขั้นตอนที่เกี่ยวข้องในการยืนยันการขาย รวมถึงการอัปเดตสินค้าคงคลังและการแจ้งเตือนลูกค้า

ขั้นตอนที่ 3: สร้างแผนภาพการทำงานของคอนโทรลเลอร์

ไฟล์ controllers/portal.py กำหนดเอ็นพอยต์ที่ลูกค้าจะใช้เพื่อดูคำสั่งซื้อในพอร์ทัล การใช้ Code2Flow บนไฟล์นี้จะช่วยให้เราเห็นการทำงานของคำขอ (request) ในแต่ละส่วนของระบบ Odoo

code2flow controllers/portal.py -o portal_flowchart.png

ผลลัพธ์ที่ได้คือแผนภาพที่แสดง:

  • การแมปเส้นทาง (Route Mappings): การกำหนดเส้นทางที่กำหนดโดยตัวระบุ เช่น @http.route ซึ่งระบุว่าคำขอถูกจัดการอย่างไร
  • การเรียกใช้เมธอด (Method Calls): Code2Flow แสดงว่าเมธอดใดถูกเรียกเมื่อเข้าถึงเอ็นพอยต์ เช่น /my/orders

การสังเกตการทำงานในพอร์ทัล

  • การเข้าถึงคำสั่งซื้อของลูกค้า: เมธอดอย่าง my_orders ดึงและเรนเดอร์คำสั่งซื้อสำหรับผู้ใช้ที่เข้าสู่ระบบ
  • การเรนเดอร์เทมเพลต: เห็นการเรียกเทมเพลตเฉพาะสำหรับการเรนเดอร์ เชื่อมโยงส่วนหน้า (frontend) กับตรรกะในส่วนหลัง (backend)

ขั้นตอนที่ 4: ทำแผนที่ขั้นตอนการสร้างและยืนยันคำสั่งซื้อ

เมื่อสร้างแผนภาพ sale_order.py และ portal.py แล้ว คุณสามารถทำแผนที่ขั้นตอนการทำงานสำหรับการสร้างและยืนยันคำสั่งซื้อได้

ตัวอย่างการรวม Code2Flow

เพื่อทำแผนภาพกระบวนการเต็มรูปแบบของการสร้างและยืนยันคำสั่งซื้อ ให้รวมไฟล์เหล่านี้เข้าด้วยกัน:

code2flow models/sale_order.py controllers/portal.py -o full_sales_workflow.png


ผลลัพธ์ที่ได้จะแสดงให้เห็น:

  • ขั้นตอนการทำงานทีละขั้นตอน: เริ่มจากการกระทำของลูกค้าในพอร์ทัล เห็นว่าคำขอไหลไปยังโมเดล sale.order อย่างไร
  • การประมวลผลข้อมูลและตรรกะทางธุรกิจ: เมธอดเชื่อมโยงกับขั้นตอนการประมวลผล ซึ่งแสดงว่าข้อมูลได้รับการตรวจสอบ จัดเก็บ และผ่านแต่ละฟังก์ชันอย่างไร
  • การจัดการข้อผิดพลาดและตรรกะเงื่อนไข: แผนภาพของ Code2Flow จะแสดงจุดตัดสินใจในกระบวนการ ซึ่งมีประโยชน์ในการแก้ไขบั๊กหรือขยายฟังก์ชันการทำงาน

ขั้นตอนที่ 5: ปรับปรุงและเพิ่มหมายเหตุในแผนภาพ

แผนภาพที่สร้างจะให้ภาพที่เห็นถึงการเชื่อมโยง แต่การเพิ่มหมายเหตุจะช่วยเพิ่มความชัดเจนมากขึ้น:

  • ใส่คำอธิบายเมธอดหลักและความสัมพันธ์: ใช้เครื่องมือแก้ไขรูปภาพเพื่อใส่คำอธิบายที่สำคัญในแผนภาพ
  • ระบุจุดเริ่มต้นและจุดสิ้นสุดของกระบวนการ: ไฮไลต์จุดเริ่มต้นและจุดสิ้นสุดของกระบวนการ เพื่อให้ง่ายต่อการระบุขอบเขตของการทำงาน

ขั้นตอนที่ 6: ทดสอบและสำรวจโมดูลเพิ่มเติม

หลังจากเข้าใจโมดูลขายด้วย Code2Flow แล้ว คุณสามารถสำรวจโมดูลที่เกี่ยวข้อง เช่น account หรือ stock เพื่อดูว่าโมดูลเหล่านี้รวมกันอย่างไร การทำซ้ำขั้นตอนนี้จะช่วยให้คุณทำแผนที่ระบบ ERP ของ Odoo ได้ครอบคลุมยิ่งขึ้น

สรุป

การใช้ Code2Flow เพื่อสร้างภาพโมดูลขายของ O

doo จะช่วยแบ่งโครงสร้างที่ซับซ้อนให้เป็นส่วนที่จัดการได้ง่ายขึ้น วิธีนี้มีประโยชน์มากสำหรับ:

  • การเข้าใจความสัมพันธ์: ช่วยให้เห็นว่าโมเดล วิว และคอนโทรลเลอร์เชื่อมโยงกันอย่างไร
  • การพัฒนาที่รวดเร็วขึ้น: ช่วยให้ระบุส่วนของโค้ดที่ต้องการแก้ไขหรือขยายได้อย่างรวดเร็ว
  • การดีบักและปรับปรุง: ช่วยให้สามารถติดตามการไหลของข้อมูลและฟังก์ชันเพื่อหาจุดบกพร่องหรือขยายฟังก์ชันได้ง่ายขึ้น

การใช้วิธีการนี้กับโมดูลอื่นๆ ของ Odoo จะช่วยให้คุณทำความเข้าใจระบบได้เร็วขึ้น ช่วยลดระยะเวลาการเรียนรู้และทำให้การปรับแต่งทำได้ง่ายขึ้น ลองนำขั้นตอนเหล่านี้ไปใช้กับโมดูลอื่นๆ เพื่อให้เข้าใจการทำงานของ Odoo อย่างครอบคลุม


การใช้วิธีการนี้จะช่วยให้ผู้พัฒนาเข้าใจโมดูลต่างๆ ของ Odoo ผ่านภาพอย่างเป็นระบบ ทำให้สามารถนำทางและเรียนรู้ได้ง่ายขึ้น

Ready to talk about your project?

Share goals and constraints. We'll assemble architects and engineers to move fast with you.

Get in touch