OdooWiki OCA HUB

Product Attribute Value Dependent Mixin

product_attribute_value_dependent_mixin folder_open OCA/product-attribute open_in_new
Product Licencia: AGPL-3

Este módulo técnico introduce un mixin reutilizable diseñado para permitir que cualquier modelo establezca dependencias sobre valores específicos de atributos de producto. Al heredar de este mixin, los desarrolladores pueden vincular fácilmente reglas de negocio, configuraciones o registros a variantes de producto precisas sin duplicar lógica de filtrado compleja.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 18.0

Bloque de construcción técnico que permite a otros modelos de Odoo almacenar una plantilla de producto, una variante específica y un conjunto de valores de atributos de producto, y reducir automáticamente las opciones mostradas al usuario. No añade ningún menú ni pantalla por sí mismo.

Este es un módulo técnico: no añade ningún menú, botón ni informe que un usuario pueda abrir directamente. En su lugar, proporciona una base reutilizable (un mixin) que otros módulos pueden conectar a sus propios registros.

Cuando un modelo lo utiliza, cada registro obtiene: - un campo Product Template y un campo Product (la variante específica); - un campo Attribute Values donde se pueden seleccionar varios valores de atributo de producto (por ejemplo, valores de color o talla); - dos campos auxiliares que se calculan automáticamente y no están pensados para editarse a mano.

Comportamiento automático: - En cuanto se elige una plantilla de producto, la lista de variantes de producto seleccionables se restringe a las variantes que realmente existen para esa plantilla. - Del mismo modo, la lista de valores de atributo seleccionables se restringe a los valores que realmente utilizan las líneas de atributo de esa plantilla. - Un método auxiliar comprueba si un producto dado coincide con el registro: coincide cuando la variante almacenada es ese producto, cuando la plantilla es la misma y cuando todos los valores de atributo seleccionados están presentes en los atributos de variante del producto.

Toca los datos de plantilla de producto, variante de producto y valor de atributo de producto. Como es abstracto, instalarlo por sí solo no cambia nada visible en la interfaz; su valor aparece solo en los módulos que heredan de él.

Depende de

product

Lo necesitan otros módulos

Modelos y campos (1)
  • attribute.value.dependent.mixin · modelo nuevoproduct_id, product_tmpl_id (Product Template), attribute_value_ids (Attribute Values), available_product_domain, available_attribute_value_domain

Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 2 confirmadas, 7 sin información de 9 versiones.

Fuentes · Odoo 18.0

Confirmado el 2026-11-03 en la rama 18.0 de OCA/product-attribute.

terminal Instalación y uso

Documentación de OCA · Odoo 18.0

Campos

El mixin expone los siguientes campos:

  • product_tmpl_id: la plantilla de producto sobre la que filtrar (opcional).
  • product_id: una variante de producto específica (opcional).
  • attribute_value_ids: un conjunto de valores de atributo sobre los que filtrar (opcional).
  • available_product_domain: un dominio calculado para restringir la selección de product_id en las vistas, basado en product_tmpl_id.
  • available_attribute_value_domain: un dominio calculado para restringir la selección de attribute_value_ids en las vistas, basado en product_tmpl_id.

Heredar el Mixin

Para usar este mixin, hereda de attribute.value.dependent.mixin en tu modelo junto con tu modelo base:

from odoo import fields, models


class MyModel(models.Model):
    _name = "my.model"
    _inherit = ["my.model", "attribute.value.dependent.mixin"]

Todos los campos del mixin (product_tmpl_id, product_id, attribute_value_ids, available_product_domain, available_attribute_value_domain) están disponibles automáticamente en tu modelo.

Usar los campos de dominio en una vista de formulario

Los campos de dominio calculados deben referenciarse en el atributo domain de los campos correspondientes en la vista. Odoo 18.0 carga automáticamente los campos referenciados en los atributos domain, por lo que no se necesita ninguna declaración adicional.

<record id="view_my_model_form" model="ir.ui.view">
    <field name="name">my.model.form</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <form>
            <group>
                <field name="product_tmpl_id"/>
                <field name="product_id"
                       domain="available_product_domain"
                       context="{'default_product_tmpl_id': product_tmpl_id}"/>
                <field name="attribute_value_ids"
                       domain="available_attribute_value_domain"
                       widget="many2many_tags"/>
            </group>
        </form>
    </field>
</record>

Lógica de coincidencia

El método is_matching_product(product) valida si una variante de producto dada satisface las restricciones configuradas. Todos los campos son opcionales y actúan como filtros independientes combinados con lógica AND:

  • Si product_id está establecido, es el criterio más restrictivo: el método devuelve True solo si el producto dado es exactamente esa variante, independientemente de los demás campos.
  • Si product_tmpl_id está establecido, el producto dado debe pertenecer a esa plantilla.
  • Si attribute_value_ids está establecido, el producto dado debe coincidir con los valores de atributo configurados con la siguiente lógica:
  • Los valores que pertenecen al mismo atributo se combinan con OR (por ejemplo, talla S o M).
  • Los valores que pertenecen a atributos diferentes se combinan con AND (por ejemplo, talla S o M y color Rojo).
  • Dado que un valor de atributo puede existir en varias plantillas, product_tmpl_id y attribute_value_ids deben usarse juntos para evitar coincidencias no deseadas entre plantillas.
  • Si no se establece ningún campo, el método devuelve True para cualquier producto (sin restricción).

Usar is_matching_product

El método is_matching_product(product) se puede llamar desde código Python para comprobar si un registro product.product dado satisface las restricciones definidas en un registro del mixin:

for rule in self.env["my.model"].search([]):
    if rule.is_matching_product(product):
        # apply rule

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.