I'm trying to extend the sales.order object with a field called Number_Pages. Therefore I have created a module with the following code (in odoo v7):
from openerp.osv import fields, osv
class order_printing(osv.osv):
_inherit = "sale.order.line"
_columns = {
'Number_Pages': fields.integer('Number of Pages', size=4)
}
_defaults ={
'Number_Pages': 1
}order_printing()
I'd like to include this field right after the product_id in the sales.view_order_form. So in Debug mode I go to create a sales order and choose the Manage Views. That gives me the sale.view_order_form external ID. Looking into the XML through the webinterface I can see the html structure as follows: view/form/sheet/notebook/page/field (name='order_line')/form/group/group/field(name='product_id')
And as Grover Menacho observes I should not only include the field in the form view but also in the tree view. They're both in the sales.view_order_form.
So following documentation and blogs about this, I've written the following XML file for the inherited Sales Order view:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="order_printing">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='order_line']/form/field[@name='product_id']"
position="after">
</xpath>
<xpath
expr="//field[@name='order_line']/tree/field[@name='product_id']"
position="after">
<field name="Number_Pages"/>
</xpath>
</field></record>
</data>
</openerp>
It gives me the XML validation error when trying to install it. I've tried a few things, changing the xpath, or without the xpath, just referring to the field, but it comes back with the same error all the time. I guess there's something really simple that I'm doing wrong... Anyone? (edited in bold after Hiren Vora's and other's suggestions).
This is the error I'm getting:
AttributeError: View definition error for inherited view '' on model 'sale.order': Element '<xpath expr="//field[@name='order_line']/form/field[@name='product_id']">' not found in parent view 'sale.view_order_form'
2014-07-16 11:15:03,352 7446 ERROR test_2 openerp.tools.convert: Parse error in /home/wouter/odoo-dev/custom-modules/order_printing/order_printing.xml:4:
<record model="ir.ui.view" id="order_printing">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<data><xpath expr="//field[@name='order_line']/form/field[@name='product_id']" position="after">
</xpath>
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="after">
<field name="Number_Pages"/>
</xpath>
</data></field>
</record>
@Wouter - I think you have wrongly inherited the model, It should be 'sale.order.line' as you want to put the field after the 'product_id' of sale order line object.