Suggestions for Odoo Product Module Enhancement: Dynamic Combination Sets and Combination Product Interface Optimization
Background
While using the Odoo18 product module, the following two practical issues have been identified that require improvement:
1. Dynamic Combination Sets Management
• For selling complex sets (e.g., combinations of multiple variants or products), the current functionality is inefficient:
• Dynamically generating complex combination sets, especially in scenarios involving multiple colors and sizes, involves excessive manual work.
• The current “Product Type: Combination” feature only supports static child-product definitions, lacking the ability to flexibly generate variant-based dynamic combinations.
2. Combination Product Interface is Not User-Friendly
• Currently, combination product management is nested within two data tables:
• The first layer contains the combination product records.
• The second layer manages the details of the combination (child products and their specifics).
• The nested structure leads to inefficiencies in data maintenance and lacks flexibility, particularly when frequent adjustments are required.
Proposed Enhancements
Below are two improvement suggestions aimed at addressing dynamic combination sets and optimizing the management of combination products:
Enhancement 1: Dynamic Combination Sets Functionality
Problem Statement
• Dynamic combination sets should be able to automatically match existing child product variants and allow manual adjustments (e.g., adding extra products or setting different quantities).
• Example scenario: Shirts (in red, blue, white; sizes S/M/L/XL) and Pants (in black; sizes S/M/L/XL).
• Automatically generate a combination set (e.g., white shirt S + black pants S).
• Support manually adjusting the combination set (e.g., adding an extra pair of pants or including accessories like socks or scarves).
Implementation Plan
1. Expand Product Attributes: Add a Combination Attribute
• In Sales > Configuration > Products > Attributes, introduce a new table called Combination, similar to the existing variant creation attribute table, with an additional field called Combination Type:
• Values: Create Variants or Combination.
• When the combination type is set to “Combination,” the system does not create new variants but automatically matches previously created variants and dynamically generates combination records.
• These combination records are updated dynamically if the original variants change.
2. Dynamic Combination Details
• Dynamic combination sets are virtual products and inherit the existing Product Type: Combination logic:
• Automatically generate combination products (combination records).
• Support manual adjustments to the combination content (e.g., customizing quantities, prices, or adding extra child products).
• In sales and inventory management, combination products are treated as standalone products, but child product inventory is deducted.
Advantages
• Reduced Manual Work: Automatically generate complex combination sets, significantly reducing maintenance effort.
• Increased Flexibility: Supports manual adjustments to suit real-world sales needs.
• Compatibility: Leverages existing variant logic without requiring significant changes to native sales and inventory modules.
Enhancement 2: Optimize Combination Product Management Interface
Problem Statement
• Enhance the interface for managing Product Type: Combination in the product module to simplify maintenance and improve user experience.
• Combination product content should be manageable directly in the main product record without requiring access to a secondary data table.
Implementation Plan
1. Interface Optimization
• Add an embedded table to the combination product interface for directly managing combination content:
• Columns: Child Product Name, Quantity, Custom Sales Price, and Action Buttons (Add/Edit/Delete).
• Action Buttons:
• Add Child Product: Dynamically select existing products or variants and set quantities.
• Delete Child Product: Quickly adjust the combination content.
• Pricing Logic: Support independent pricing or inheritance from child products, with the ability to switch between these options.
2. Data Structure Optimization
• Add a new field, combination_lines, to the existing product model to track combination content (child products and their quantities).
• Merge existing independent child tables to simplify the data structure.
3. Preserve Native Logic
• Sales Management: Combination product prices can be calculated as the total of child product prices or set independently.
• Inventory Management: When a combination product is sold, the inventory of child products is automatically deducted.
Advantages
• Simplifies the maintenance of combination product content, improving operational efficiency.
• Reduces data structure complexity, enhancing system maintainability.
• Remains highly compatible with native logic, minimizing changes to sales and inventory workflows.
Integrated Proposal
Goal
Combine the above two enhancements to build an efficient and flexible combination product management system, addressing the following:
1. Dynamically generate and manage complex combination sets (automatically matching existing variants with manual adjustment options).
2. Optimize the interface design and data structure for managing static combination products, improving user experience.
Expected Benefits
1. Enhance configuration efficiency for complex combination products, reducing manual workload.
2. Meet diverse sales requirements for dynamic combination sets and static combination products.
3. Improve system compatibility and stability while minimizing the risk of disrupting existing native workflows.
Additional Issue: Nested Structure of Combination Data
Problem Statement
• In Product Module > Product Type: Combination, the current implementation relies on a nested two-layer data table for combination product management.
• This structure is inefficient and overly complicated, particularly for frequent combination adjustments.
Suggested Improvement
• Directly manage combination content within the product record interface, avoiding the need for secondary tables.
• Consolidate all combination data into a single layer to streamline the process and improve data integrity.
Thank you for considering these suggestions!
If further technical implementation details or user scenarios are needed, we are happy to provide additional support.