Vous êtes sur la page 1sur 4

8/10/2016 Modificar Vistas en Odoo (OpenERP) | vici0uz

 
 

vici0uz

Acerca de nada, Unix, programación, redes y otras
chorradas

OPENERP, PROGRAMACIÓN, ODOO

Modificar Vistas en Odoo (OpenERP)

13 ABRIL, 2015 | VICI0US_ | OPENERP, ODOO, HERENCIA, VISTAS, FORMULARIOS, XPATH, XML,
FORM, DISEÑO | 9 COMENTARIOS
En este articulo voy a tratar de describir lo mas extenso y posible sobre la herencia de las vistas para Odoo,
aunque creo que de todas formas va ir dividido en varios artículos.Asumo que saben como declarar nuevas
vistas aunque sea.
Empezar diciendo que Odoo es un sistema muy modular, esto se refleja en que la interfaz es solo un cliente
mas, de hecho, en realidad es una aplicación escrita en javascript que se descarga in situ al navegador del cliente
y que renderiza el contenido de acuerdo a la información que le envié el servidor. Es importante saber que
existen otros clientes, como el todo poderoso script erppeek, aplicaciones no oficiales e incluso alguna vez el
cliente web convivió con una interfaz de escritorio nativa en escrita en GTK+.
El cliente web esta escrito con base en la libreria QWEB, el cliente es propietario y OpenERP paga una licencia
por usar esta tecnología. Ademas se usa jQuery, Underscore, Bootstrap y otras tecnologías.
Sin embargo para diseñar nuestras propias vistas ni siquiera nos tenemos que preocupar por saber JavaScript o
CSS, nosotros declaramos los formularios y el cliente web se encarga de renderizarlos con sus respectivos
campos, botones y diseños.
Así que manos a la obra:
Tenemos un formulario que modificar, en este caso, me decido por Contabilidad>Facturas de Proveedor, por
ser bastante complejo y permitirme ilustrar una gran cantidad de casos. En el post anterior explique como añadir
campos, supongamos que añadimos un campo‘invoice_condition’ (para indicar si la factura es al contado o
crédito).
Vamos a intentar de hacerlo por las buenas, no hace falta mirar el código siquiera y es conveniente declarar los
cambios en un modulo, ya que así los cambios perduran a las actualizaciones.
Vamos hasta facturas de Proveedor, teniendo el cliente Web en modo desarrollador.
En la pestaña de desarrollador seleccionamos administrar vistas, pincharemos la vista original, para heredar el
id de esta vista. Nos interesan la siguiente información:

https://vici0uz.wordpress.com/2015/04/13/modificar-vistas-en-odoo-openerp/ 1/6
8/10/2016 Modificar Vistas en Odoo (OpenERP) | vici0uz

(https://vici0uz.files.wordpress.com/2015/04/pantallazo­facturas­de­
proveedor­odoo­mozilla­firefox.png)
objeto = El modelo que tiene los campos que vamos a modificar.
id externo = el id que identifica univocamente a esta vista

(https://vici0uz.files.wordpress.com/2015/04/pantallazo­facturas­de­
proveedor­odoo­mozilla­firefox­2.png)
En nuestro modulo, agregamos el archivo view al manifiesto openerp del modulo.

<?xml version="1.0" encoding="UTF-8"?>


<openerp>
<data>
<record model="ir.ui.view" id="account_invoice_suplier_form_inherited">
<field name="name">account.invoice.supplier.form.inh</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_supplier_form"/>
<field name="arch" type="xml">
<!-- MIS CAMPOS -->
</field>
</record>
</data>
</openerp>

https://vici0uz.wordpress.com/2015/04/13/modificar-vistas-en-odoo-openerp/ 2/6
8/10/2016 Modificar Vistas en Odoo (OpenERP) | vici0uz

Hasta aquí la estructura básica para heredar una vista, el “id” le ponemos el que queramos, “name” también,
pero conviene hacerlo entre puntos, porque esa cadena va ser incluida en los archivos de traducción, y los va
confundir luego. En “model”, ponemos la información del objeto que obtuvimos en modo desarrollador, y
el mas importante en este caso es “inherit_id” y “ref”, ahi ponemos el id externo de la vista, ojo no olvidar
ponerla con el punto en este caso es “account.invoice_supplier_form”.

Ahora vamos a ver casos comunes, dejo caso mas complicados para un siguiente post.

Añadir un campo.
Hacer invisible un campo.
Hacer requerido un campo.
Cambiar el tamaño de un campo
Especificar un placeholder (marcador de posición)
Cambiar atributos respecto a otro campo.

Voy a añadir el campo ‘invoice_condition’:

<?xml version="1.0" encoding="UTF-8"?>


<openerp>
<data>
<record model="ir.ui.view" id="account_invoice_suplier_form_inherited">
<field name="name">account.invoice.supplier.form.inh</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_supplier_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date_invoice']" position="af
<field name="invoice_condition" required="1" placeholde
</xpath>
</field>
</record>
</data>
</openerp>

Hay varios métodos para recorrer la estructura, pero el que muestro mas arriba es el mas elegante y poderoso, se
trata de construir expresiones a traves de XPATH (de XML Path Language).
Creamos las etiquetas <xpath></xpath> y dentro del atributo expr=”” le decimos que busque el campo cuyo
nombre sea ‘date_invoice’ (la fecha de la factura), el atributo position=, le indicamos after, para que coloque
nuestro nuevo campo inmediatamente después de date_invoice.

Estas son las opciones:

after: inmediatamente despues
before: antes del elemento referencia
replace: reemplazar el campo con otro que debemos indicarle
attributes: acceder a los atributos del campo
XPATH también puede recibir el nombre de ruta completo del elemento en cuestión, si es que lo conocemos
o simplemente somos masoquistas.

https://vici0uz.wordpress.com/2015/04/13/modificar-vistas-en-odoo-openerp/ 3/6
8/10/2016 Modificar Vistas en Odoo (OpenERP) | vici0uz

En el atributo required, le indicamos “1”(True), para que sea un campo obligatorio.
Otros atributos comunes son
invisible: El campo esta ahí, pero no se ve.
readonly: Solo lectura
nolabel: No dibujar la etiqueta
widget: Usar otro widget para mostrar/introducir los datos
attrs: declarar varios atributos en uno solo
class: añadir clases CSS
placeholder: marcador guiá
Modificaremos los atributos del campo ‘partner_id’, para mostrar como manipular los atributos.

(https://vici0uz.files.wordpress.com/2015/04/pantallazo­facturas­de­
proveedor­odoo­mozilla­firefox­1.png)
1 <xpath expr="//field[@name='partner_id']" position="attributes">
2     <attribute name='required'>0</attribute>
3     <attribute name='nolabel'>1</attribute>
4 </xpath>

Acerca de estos anuncios (https://wordpress.com/about­these­ads/)

9 thoughts on “Modificar Vistas en Odoo (OpenERP)”

https://vici0uz.wordpress.com/2015/04/13/modificar-vistas-en-odoo-openerp/ 4/6

Vous aimerez peut-être aussi