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
Descartar
1 Respuesta
1
Mejor respuesta

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 Comentarios
Avatar
Descartar
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

Su respuesta

Intente dar una respuesta sustancial. Si desea hacer un comentario sobre la pregunta o la respuesta, utilice la herramienta de comentarios. Recuerde que siempre puede revisar sus respuestas , no es necesario responder dos veces a la misma pregunta. No olvide votar , ayuda a seleccionar las mejores preguntas y respuestas