- Create .github/copilot-instructions.md with global development guidelines - Add comprehensive README.md at project root with quick start guide - Create docs/ directory for technical documentation - Move installation and linter docs to docs/ - Add docs/TRANSLATIONS.md with complete translation system guide - Create README.md for OCA modified addons (product_origin, product_get_price_helper, product_main_seller) - Document translation best practices (no _() in field definitions) - Add references between all documentation files - Clean up project root by moving technical docs to docs/ All documentation now properly references addon-specific READMEs for detailed architecture and implementation. |
||
|---|---|---|
| .. | ||
| i18n | ||
| models | ||
| readme | ||
| static/description | ||
| tests | ||
| views | ||
| __init__.py | ||
| __manifest__.py | ||
| hooks.py | ||
| pyproject.toml | ||
| README.md | ||
| README.rst | ||
Product Main Seller
Summary
Adds a "Main Vendor" field to products that automatically tracks the primary supplier based on supplierinfo sequence.
Features
- Automatic Main Vendor: Computed field showing the primary supplier
- Based on Sequence: Uses the supplierinfo with the lowest sequence number
- Visible in Views: Shows in product form and tree views
- Searchable: Can search and filter products by main vendor
- Related Fields: Access to vendor name and reference
Technical Details
Models Extended
product.template: Main product templateproduct.product: Product variants
Fields Added
-
default_supplier_id(Many2one → res.partner, computed, stored)- The main vendor for this product
- Computed from
seller_idswith lowest sequence - Stored for performance
- Searchable
-
default_supplier_ref(Char, related todefault_supplier_id.ref)- The supplier's reference code
- Readonly
Computation Logic
The main vendor is determined by:
- Looking at all supplierinfo records (
seller_ids) - Filtering for valid suppliers (not companies)
- Selecting the one with the lowest sequence number
- If no sequence, uses the first one
Migration Hook
Includes pre_init_hook that:
- Populates
default_supplier_idon existing products during installation - Ensures data consistency from the start
Dependencies
purchase(Odoo core)
Installation
docker-compose exec odoo odoo -d odoo -u product_main_seller --stop-after-init
Usage
Viewing Main Vendor
- Open a product form (Products > Products > [Product])
- See "Main Vendor" field (usually in Purchase tab)
- Field is automatically computed from vendor list
Changing Main Vendor
To change the main vendor:
- Go to product form > Purchase tab
- Edit the vendor list (
seller_ids) - Change the sequence numbers (lower = more priority)
- Save - the "Main Vendor" will update automatically
Searching by Vendor
# Find all products from a specific vendor
products = self.env['product.template'].search([
('default_supplier_id', '=', vendor_id)
])
OCA Source
- Repository: purchase-workflow
- Original Author: GRAP
- Maintainers: legalsylvain, quentinDupont
- License: AGPL-3
Modifications for Kidekoop
None - Used as-is from OCA.
Use Cases in Kidekoop
This module is critical for:
product_price_category_supplier: Bulk updating products by main vendor- Purchase order management
- Vendor performance analysis
- Inventory planning by supplier
Views Modified
- Product Template Form View
- Product Template Tree View
- Product Variant Form View
Translations
- ✅ Spanish (es)
- ✅ Euskera (eu)
Located in i18n/ directory.
Version: 18.0.1.0.0 Category: Purchase License: AGPL-3