[ADD] product_origin_char: Free text origin field per supplier

New addon to replace structured country/state fields with flexible
free-text origin descriptions.

Features:
- Translatable origin_text field in product.supplierinfo
- Computed origin field in products based on main_seller_id
- Support for creative supplier origin descriptions
- Full OCA documentation structure
- ES/EU translations included
- 8 unit tests (all passing)

Replaces product_origin for use cases where suppliers use non-standardized
origin descriptions (e.g., 'Valencia, Spain', 'Huerta de...', etc.)

Depends on: product, product_main_seller
Author: Criptomart
Funding: Elika Bilbo
This commit is contained in:
snt 2026-02-25 18:42:54 +01:00
parent 1a8f92a01e
commit c8b83cc333
24 changed files with 1071 additions and 0 deletions

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2026 Criptomart
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<!-- Add origin_text field to product.supplierinfo form view -->
<record id="product_supplierinfo_form_view_origin_text" model="ir.ui.view">
<field name="name">product.supplierinfo.form.origin.text</field>
<field name="model">product.supplierinfo</field>
<field name="inherit_id" ref="product.product_supplierinfo_form_view" />
<field name="arch" type="xml">
<field name="product_code" position="after">
<field
name="origin_text"
placeholder="e.g., Valencia, Huerta de..., Spain"
/>
</field>
</field>
</record>
<!-- Add origin_text field to supplierinfo tree in product form -->
<record id="product_supplierinfo_tree_view_origin_text" model="ir.ui.view">
<field name="name">product.supplierinfo.tree.origin.text</field>
<field name="model">product.supplierinfo</field>
<field name="inherit_id" ref="product.product_supplierinfo_tree_view" />
<field name="arch" type="xml">
<field name="product_code" position="after">
<field name="origin_text" optional="show" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2026 Criptomart
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<!-- Add origin_text field to product template form view -->
<record id="product_template_form_view_origin_text" model="ir.ui.view">
<field name="name">product.template.form.origin.text</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<group name="purchase" position="inside">
<field
name="origin_text"
readonly="1"
string="Origin (from Main Vendor)"
/>
</group>
</field>
</record>
<!-- Add origin_text field to product product tree view -->
<record id="product_product_tree_view_origin_text" model="ir.ui.view">
<field name="name">product.product.tree.origin.text</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_product_tree_view" />
<field name="arch" type="xml">
<field name="default_code" position="after">
<field name="origin_text" optional="hide" />
</field>
</field>
</record>
<!-- Add origin_text field to product template tree view -->
<record id="product_template_tree_view_origin_text" model="ir.ui.view">
<field name="name">product.template.tree.origin.text</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product_main_seller.view_product_template_tree" />
<field name="arch" type="xml">
<field name="main_seller_id" position="after">
<field name="origin_text" optional="hide" />
</field>
</field>
</record>
</odoo>