modificar valores de campo via xml

126 views
Skip to first unread message

Annie

unread,
Jul 18, 2014, 5:30:51 PM7/18/14
to openerp-s...@googlegroups.com
Hola,

En un módulo de v6.1 he añadido un campo a una tabla de productos con miles de entradas. Ahora necesito actualizar valores de la columna en ciertas tuplas de la tabla, que deberán tomar el valor "True" según el nombre del producto.

Intento evitar los updates a pedal directamente en la db o la creación de un asistente de instalación. Me pregunto si existe la forma de hacerlo con un fichero xml al instalar el nuevo módulo.

Podría eliminar los registros a modificar
 
   <delete model="modelo" search="[('campo','=','valor')]"/>

(esto funciona correctamente al menos en la v6.1) y luego volver a crearlos con

   <record id="product_product_nuevo" model="product.product"> ... </record>

El problema es lidiar con el conjunto de relaciones existentes. Tal vez alguien ha pasado por una situación similar. Se agradece cualquier idea al respecto.

Un saludo!













Angel Moya

unread,
Jul 19, 2014, 1:28:28 AM7/19/14
to openerp-s...@googlegroups.com

Podrías desactivarlos en lugar de borrarlos.

Puedes hacer una busqueda en el listado de openerp con un filtro extendido, los resultados los exportas a csv, añades la columna active y le das valor False, y luego importas los nuevos.

Aunque la primera parte, de poner active a false si lo puedes hacer sin miedo en base de datos.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Pedro Manuel Baeza Romero

unread,
Jul 19, 2014, 6:03:45 AM7/19/14
to openerp-s...@googlegroups.com
Buenas, Annie,

También puedes actualizar los registros utilizando XML con el mismo ID. Para ello, en el atributo id, debes poner <modulo>.<XML-ID>. Por ejemplo, id="sale.product_1".

Un saludo.

Annie .

unread,
Jul 19, 2014, 9:22:21 PM7/19/14
to openerp-s...@googlegroups.com
Gracias por vuestras respuestas. 
He comenzado por la sugerencia de Pedro, (es más sencilla y similar a lo que ya tenía avanzado).
El header del record en el xml original era: 

        <record id="product_product__tabloncepilladao54" model="product.product">

en tanto en el nuevo he puesto esto:

        <record id="product.product.product_product_tabloncepilladao54" model="product.product">

sin embargo al instalar el módulo surge un error que no logro entender.

 File "/home/annie/openerp/server/openerp/tools/convert.py", line 279, in _test_xml_id
    form: module.record_id""" % (xml_id,)
AssertionError: The ID reference "product.product.product_product_tabloncepilladao54" must contain
maximum one dot.

They are used to refer to other modules ID, in the form: module.record_id

 Parece que a open no le gustan los nombres con muchos puntos.

Alguna pista? Gracias!



Date: Sat, 19 Jul 2014 12:03:44 +0200
Subject: Re: modificar valores de campo via xml
From: pedro...@gmail.com
To: openerp-s...@googlegroups.com

Pedro Manuel Baeza Romero

unread,
Jul 19, 2014, 11:33:40 PM7/19/14
to openerp-s...@googlegroups.com

Buenas, Annie, tienes que utilizar el nombre del módulo, no del modelo. Sería:

<record id="product.product_product_tabloncepilladao54" model="product.product">

Un saludo.

Annie .

unread,
Jul 20, 2014, 3:54:58 PM7/20/14
to openerp-s...@googlegroups.com
Gracias Pedro! He sido un poco torpe, la ansiedad y tal... cuando tu lo has puesto claro, "módulo".
Finalmente ha funcionado de maravilla.

Debes poner bastante atención y utilizar el nombre del módulo en que has realizado la importación.
He puesto el nombre del módulo que crea el modelo, es decir "product" y obviamente ha creado un nuevo producto en lugar de modificar el existente. Es el nombre del módulo que crea el producto en la db, en este caso un módulo de usuario, desarrollado para carga de datos.

Ahora me faltaría hacer un par de pruebas con las sugerencias de Angel, ya os comentaré como sale.

Un saludo.
An
 




Date: Sun, 20 Jul 2014 05:33:38 +0200
Subject: RE: modificar valores de campo via xml
From: pedro...@gmail.com
To: openerp-s...@googlegroups.com

Annie .

unread,
Jul 21, 2014, 9:22:25 PM7/21/14
to openerp-s...@googlegroups.com
Hola, Angel, he intentado con éstas indicaciones pero sin éxito. La exportación con los productos filtrados se realiza ok. Una vez añadida la columna active, todos en False, intentas hacer la importación y comienzan los problemas.

Hay campos que son exportados por su valor de despliegue y no por su valor de campo, lo cual dará error al intentar importarlos. En "Procurement Method" o "Método abastecimiento" (he cambiado a Inglés por si las moscas, pero tampoco) por ejemplo, el valor que despliega en pantalla es "Make to Stock" y en la db es "make_to_stock", así  unos cuantos.

Luego de corregirlos y lograr que la importación se hiciera correctamente, lo que obtienes no es lo esperado. Se crea el nuevo producto con el valor False en active, tienes que verlo en la db, dado que el interfaz no te lo muestra, debido al valor False en active, supongo. En tanto nuestro viejo y testarudo producto sigue allí, absolutamente incambiado.

Quizá haya hecho algo mal, o tal vez simplemente no funcione así. La versión es ocb-6.1.

Si bien lo resuelto a la manera de Pedro, no quería dejar de ensayar tu receta y reportar la experiencia. A vosotros, muchas gracias.

Un saludo.
An





Date: Sat, 19 Jul 2014 07:28:27 +0200
Subject: Re: modificar valores de campo via xml
From: angel...@domatix.com
To: openerp-s...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages