General

¡Bienvenido a los foros Aeodoo!

Somos la comunidad de Odoo internacional hispanohablante.
Estos foros son para compartir y debatir dudas técnicas, funcionales y mejores prácticas para Odoo. Recuerda que no están permitidos los insultos, descalificaciones o spam, cualquier conducta reprobable supondrá el baneo del usuario.

0

[DUDA CONCEPTAL] --> Creación de artículos con variantes a través de código

Avatar
Amadeo Morán

Buenas tardes,


estoy haciendo un modulo para importar datos desde otra base de datos de Odoo.

Ya he conseguido

- Crear productos que no tienen variantes: (self.env['product.template'].create(articulo))

- Crear los atributos y los valores de los atributos de la base de datos de la que quiero importar.


Me surge la duda a la hora de crear los artículos que tienen variantes...

-  Esos artículos están en 'product.product' y el 'product.template' es con lo que se manejan características comunes a todas las variantes....

- ¿Que se debe crear primero cada uno de los 'product.product'? o ¿crear el 'product.template' y se crean automaticamente las variantes como haciendolo de forma manual?


S2,

Amadeo.

Avatar
Discard
1 Answer
1
Best Answer

En los atributos hay un campo llamado create_variant (cuyo valor por defecto es 'always'), por lo que automáticamente al escribir mediante el ORM un nuevo atributo en el product.template,  se creará el product.product (o los product.product según combinaciones de atributos) necesario.
Lo puedes ver en el código del módulo product, que es core, en el que está el método create_variant_ids() de product.template llamado tanto en el create como en el write:

https://github.com/OCA/OCB/blob/12.0/addons/product/models/product_template.py#L478

Por lo que en resumen, al crear el template y asociarle los atributos (y valores) que has creado, te creará automáticamente todos los product.product necesarios.

2 Comments
Avatar
Discard
Avatar
Amadeo Morán
-

Gracias Dario,

Me queda más claro el flujo pero en el template no hay referencia alguna a los id del 'product.attribute.value' que son al final los valores de los atributos no?.

Hay referencia a unos ids de la tabla 'product.template.attribute.line'. ¿Tengo que crear los atributos primero en esa tabla? En esa tabla si se hace referencia a los valores de los atributos 'product.attribute.value'.

S2

efectivamente, el modelo 'product.template.attribute.line'. representa una combinación de un atributo con sus posibles valores, debes crear ese registro y después asociarselo al product.template a través de attribute_line_ids

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!