Odoo Help


Adding value to custom field

rudyanto santoso
on 9/8/15, 7:10 AM 849 views

I allready made a modul to create field base_price at sales order line, now I want to fill that field with list_price from product template and change everytime product_id change, how to write a modul for that purpose.

I wrote this modul for trial , but didn't work.

this is modul to create field base_price

from openerp.osv import orm, fields

import openerp.addons.decimal_precision as dp

class sale_order_line(orm.Model):

_name = 'sale.order.line'

_inherit = 'sale.order.line'

_columns = {

'base_price':fields.float('Base Price', required=True, digits_compute=dp.get_precision('Product Price'), readonly=True, states={'draft':[('readonly', False)]}),


_default = {

'base_price': 0.0,


this is the xml file

<?xml version="1.0"?>
<record model="ir.ui.view" id="view_order_form">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="//form/sheet/notebook/page/field[@name='order_line']/form/group/group/field[@name='price_unit' ]" position="before">
<field name="base_price"/>
<xpath expr="//form/sheet/notebook/page/field[@name='order_line']/tree/field[@name='price_unit' ]" position="before">
<field name="base_price"/>

And this is a modul to fiiling value to that fields, and I make it at different modul.

from openerp.osv import orm, fields, api

class sale_order_line(orm.Model):

    _inherit = "sale.order.line"

    def product_id_change( self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='',

        partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False,

        fiscal_position=False, flag=False, context=None):


        vals=super(sale_order_line.self).product_id_change(cr, uid, ids, pricelist, product, qty=qty, uom=uom,

        qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id, lang=lang, update_tax=update_tax,         date_order=date_order, packaging=packaging, fiscal_position=fiscal_position, flag=flag, context=context)


        return vals

There are no error when I'm installing this modul, but when I change Product at sales order line form, nothing happened to field base_price.

Sorry there are no equal before 999.99, it's mistype.

@Goswani : Sorry, it's not worked, nothing change. thanks

rudyanto santoso
on 9/8/15, 12:06 PM

Try to change this line without "equal to"(=) symbol in it vals['value'].update({'base_price': 999.99})

Atchuthan - Technical Consultant, Sodexis Inc
on 9/9/15, 2:04 AM

also, it would be helpful if you provide us with the error traceback in the question itself by editing it.

Atchuthan - Technical Consultant, Sodexis Inc
on 9/9/15, 2:05 AM



| 4 4 6
Hyderabad, India

On 9/9/15, 1:24 AM


First of all as you said "I allready made a modul to create field base_price at sales order line", i can't see any defination of creating "base_price" field in your module!!. so, please add it if you missed.....

Second, there is no need of "_name" attribute, it will create a new object with sale.order.line and you will not have any access to the methods of previous one, for that please try to print "vals" to see if you are getting any values returned in "vals" varialble after calling super. Please remove "_name" attribute, "_inherit" only is enough for the purpose.

Hope this will help you...

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

2 follower(s)


Asked: 9/8/15, 7:10 AM
Seen: 849 times
Last updated: 9/9/15, 11:31 AM