I am trying to add a % field with the "sales margin" to each line in a sales order, so user can see sales margin for each item.
I already posted a similar question and I though I understood how to do it, but then I realized I didn't.
First thing I have to do is clearly to add a new field.
If I understood it right, it is needed to extend the class sales.order.line with the new field, and then define the extensions to the views.
Is 'sale_margin_percent.py' properly written? I would like to use if possible OdooV8 new API style, which is what I started to learn.
__init__.py
from . import sale_margin_percent
__openerp__.py
{
'name': 'Sales Margin Percent in Sales Orders',
'description': 'Provides sales margin percent information in Sales Orders, line by line',
'author': 'E.M.',
'depends': ['sale','sale_margin'],
'data': ['sale_margin_percent.xml'],
}
sale_margin_percent.py
# -*- coding: utf-8 -*-
from openerp import models, fields, api
class sale_order_line(models.Model):
_inherit = "sale.order.line"
_columns = {
'x_sale_margin_percent': fields.Float('Margen de Ventas', (4, 2)),
}
sale_margin_percent.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="sale_margin_percent_1">
<field name="name">sale.margin.percent.view.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='price_unit']" position="after">
<field name="x_sale_margin_percent" groups="base.group_user"/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="sale_margin_percent_2">
<field name="name">sale.order.line.tree.margin.view.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']/tree//field[@name='price_unit']" position="after">
<field name="x_sale_margin_percent" groups="base.group_user"/>
</xpath>
</field>
</record>
</data>
</openerp>
The following error takes place while trying to install module:
Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 537, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 574, in dispatch result = self._call_function(**self.params) File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 310, in _call_function return checked_call(self.db, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 307, in checked_call return self.endpoint(*a, **kw) File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 803, in __call__ return self.method(*args, **kw) File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 403, in response_wrap response = f(*args, **kw) File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 948, in call_button action = self._call_kw(model, method, args, {}) File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 936, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/openerp/addons/base/module/module.py", line 450, in button_immediate_install return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/openerp/addons/base/module/module.py", line 498, in _button_immediate_function registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True) File "/usr/lib/python2.7/dist-packages/openerp/modules/registry.py", line 370, in new openerp.modules.load_modules(registry._db, force_demo, status, update_module) File "/usr/lib/python2.7/dist-packages/openerp/modules/loading.py", line 355, in load_modules loaded_modules, update_module) File "/usr/lib/python2.7/dist-packages/openerp/modules/loading.py", line 255, in load_marked_modules loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) File "/usr/lib/python2.7/dist-packages/openerp/modules/loading.py", line 143, in load_module_graph load_openerp_module(package.name) File "/usr/lib/python2.7/dist-packages/openerp/modules/module.py", line 315, in load_openerp_module __import__('openerp.addons.' + module_name) File "/usr/lib/python2.7/dist-packages/openerp/modules/module.py", line 80, in load_module mod = imp.load_module('openerp.addons.' + module_part, f, path, descr) File "/usr/lib/python2.7/dist-packages/openerp/addons/custom/sale_margin_percent/__init__.py", line 1, in <module> from . import sale_margin_percent File "/usr/lib/python2.7/dist-packages/openerp/addons/custom/sale_margin_percent/sale_margin_percent.py", line 3, in <module> class sale_order_line(models.Model): File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 254, in __init__ setattr(self, name, column.to_field()) File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 329, in __getattr__ raise AttributeError(name) AttributeError: to_field