ในบทความนี้เราจะเจาะลึกเกี่ยวกับการปรับแต่ง Group By ใน Odoo ทั้งในเชิงเทคนิคและการประยุกต์ใช้งานจริง พร้อมทั้งตัวอย่าง และคำแนะนำสำหรับผู้พัฒนาหรือผู้ใช้งานระบบที่ต้องการนำฟีเจอร์นี้ไปใช้ให้เกิดประโยชน์สูงสุด,ฟังก์ชัน Group By ใน Odoo ช่วยให้ผู้ใช้งานสามารถจัดกลุ่มข้อมูลในมุมมองต่าง ๆ เช่น List View, Kanban View, Pivot View หรือ Graph View โดยสามารถจัดกลุ่มข้อมูลตามฟิลด์ต่าง ๆ เช่น วันที่ ผู้ใช้งาน ลูกค้า ประเภทสินค้า เป็นต้น ซึ่งมีประโยชน์อย่างยิ่งในการจัดทำรายงาน วิเคราะห์แนวโน้ม และติดตามประสิทธิภาพการทำงานในแต่ละมิติ
1. การใช้งาน Group By แบบมาตรฐาน
เมื่อเข้าใช้งานโมดูลต่าง ๆ เช่น Sale Order, Invoice, Project Task หรือ Inventory ผู้ใช้จะสามารถกดปุ่ม "Group By" ที่มุมบนขวาของหน้าจอ เพื่อเลือกฟิลด์ที่ต้องการจัดกลุ่มได้ เช่น:
- Group By: Customer
- Group By: Salesperson
- Group By: Order Date (Month/Year)
2. การปรับแต่ง Group By ด้วย XML
ผู้พัฒนาสามารถกำหนด Group By ที่ต้องการให้แสดงใน Search View ของโมเดลได้ โดยการเพิ่ม filter แบบ context="{'group_by': 'field_name'}" เช่น
โค้ด: เลือกทั้งหมด
<record id="view_task_search" model="ir.ui.view">
<field name="name">project.task.search</field>
<field name="model">project.task</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<filter string="Assigned To" context="{'group_by': 'user_id'}"/>
<filter string="Deadline" context="{'group_by': 'date_deadline'}"/>
</search>
</field>
</record>
3. การปรับแต่ง Group By ด้วย Python
ในบางกรณีผู้พัฒนาอาจต้องการให้มีการจัดกลุ่มตามเงื่อนไขพิเศษ เช่น การจัดกลุ่มข้อมูลที่ไม่ใช่ฟิลด์โดยตรง แต่เกิดจากการคำนวณ หรือฟิลด์ที่อยู่ใน relation หลายระดับ อาจต้องใช้การกำหนด @api.depends, computed field หรือแม้กระทั่งการ override เมธอดของ Odoo เช่น read_group
ตัวอย่าง:
โค้ด: เลือกทั้งหมด
class SaleOrder(models.Model):
_inherit = 'sale.order'
customer_category = fields.Selection(related='partner_id.category_id', store=True)
ในกรณีที่ฟิลด์ที่ต้องการจัดกลุ่มไม่ได้อยู่ในตารางเดียวกัน ต้องทำให้ฟิลด์นั้นสามารถถูกอ่านแบบ Stored หรือ Compute and Store เพื่อให้ใช้ใน read_group ได้
4. ประโยชน์ของการปรับแต่ง Group By
- เพิ่มความสามารถในการวิเคราะห์ข้อมูล – ผู้ใช้งานสามารถจัดกลุ่มข้อมูลตามหมวดหมู่ที่เกี่ยวข้องกับธุรกิจ ทำให้เห็นแนวโน้มและการเปรียบเทียบได้ง่ายขึ้น
- เพิ่มความสะดวกในการใช้งาน – การเพิ่ม Group By ที่ใช้บ่อยไว้ใน Search View ช่วยลดขั้นตอนของผู้ใช้งานในการค้นหาและกรองข้อมูล
- รองรับการทำรายงานแบบ Pivot/Graph – Group By ที่เหมาะสมช่วยให้รายงานเชิงสถิติมีความน่าเชื่อถือและอ่านง่าย
- ประหยัดเวลาและลดความผิดพลาด – การจัดกลุ่มข้อมูลอัตโนมัติช่วยให้ทีมงานสามารถทำงานได้รวดเร็วขึ้น
- เลือกฟิลด์ที่มีความหมายและถูกใช้บ่อย – ไม่ควรเพิ่ม Group By ฟิลด์จำนวนมากเกินไป ให้เลือกเฉพาะฟิลด์ที่มีประโยชน์จริง
- ทดสอบประสิทธิภาพก่อนใช้งานจริง – การ Group By ฟิลด์ที่ไม่มี index หรือเป็น computed อาจทำให้ระบบช้าลง ควรทดสอบกับข้อมูลจริงก่อน
- ปรับตาม Role ของผู้ใช้งาน – หากมีผู้ใช้หลายกลุ่ม ควรกำหนด Search View ตาม role เพื่อให้แต่ละกลุ่มเห็น Group By ที่เหมาะสม
- ใช้ร่วมกับ domain หรือ filter – เพื่อให้ได้ผลลัพธ์ที่เฉพาะเจาะจง เช่น แสดงเฉพาะข้อมูลของเดือนนี้ แล้วจัดกลุ่มตามแผนก
- ให้ความรู้ผู้ใช้งาน – แนะนำให้ผู้ใช้เข้าใจการใช้ Group By เพื่อประโยชน์สูงสุด เช่น ใช้ Group By ใน Pivot View เพื่อวิเคราะห์ยอดขายตามเดือน
การปรับแต่งฟังก์ชัน Group By ใน Odoo เป็นแนวทางสำคัญที่ช่วยให้การจัดการข้อมูลภายในระบบ ERP มีประสิทธิภาพมากขึ้น โดยสามารถใช้งานได้ทั้งแบบพื้นฐาน และการปรับแต่งขั้นสูงผ่าน XML และ Python ช่วยให้การวิเคราะห์ข้อมูลเป็นไปอย่างแม่นยำ เหมาะสมกับกระบวนการของแต่ละองค์กร, ไม่ว่าจะเป็นการวิเคราะห์ยอดขาย รายงานทางบัญชี การจัดการโครงการ หรือการตรวจสอบสินค้าคงคลัง การเลือกใช้ Group By อย่างถูกต้องจะช่วยให้ทีมงานสามารถมองเห็นภาพรวมได้ดียิ่งขึ้น ลดภาระในการกรองข้อมูล และเพิ่มศักยภาพในการตัดสินใจได้อย่างมีประสิทธิภาพ,หากผู้พัฒนาและผู้ใช้งานเข้าใจหลักการทำงาน รวมถึงนำไปประยุกต์ใช้ได้อย่างถูกต้อง ก็จะสามารถดึงศักยภาพสูงสุดของระบบ Odoo ออกมาใช้ได้อย่างคุ้มค่าในทุกมิติของธุรกิจ
อ้างอิง
https://www.cybrosys.com/blog/how-to-use-group-by-for-many2many-fields-in-odoo-18?utm_source=chatgpt.com
https://stackoverflow.com/questions/77733949/odoo-different-contexts-group-by-depending-on-view-mode-tree-kanban?utm_source=chatgpt.com
https://www.cybrosys.com/blog/configure-search-view-and-filters-and-group-by-in-odoo-15?utm_source=chatgpt.com