2
votes

I want to add a computed field "markup" to sale order lines in sale orders (quotes/sales orders).

enter image description here

I have created the model:

class SaleOrderLine(models.Model):
    _inherit = "sale.order.line"

    markup = fields.Float(compute='_compute_markup', digits=dp.get_precision('.2f%'), store=True)

    def _compute_markup(self, order_id, product_id, product_uom_id):
        frm_cur = self.env.user.company_id.currency_id
        to_cur = order_id.pricelist_id.currency_id
        purchase_price = product_id.standard_price
        if product_uom_id != product_id.uom_id:
            purchase_price = product_id.uom_id._compute_price(purchase_price, product_uom_id)
        ctx = self.env.context.copy()
        ctx['date'] = order_id.date_order
        price = frm_cur.with_context(ctx).compute(purchase_price, to_cur, round=False)
        return price

And a new view which inherits sale.view_order_form:

<?xml version="1.0"?>
<odoo>
    <record id="view_order_form_margin" model="ir.ui.view">
        <field name="name">sale.order.form.margin</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/group/group/field[@name="price_unit"]' position="before">
                <field name="markup"/>
            </xpath>
        </field>
    </record>
</odoo>

But the field is not shown (the view appears when you check views that inherit current view). I have reloaded everything, restarted the server and cleared the browser cache.

Any tip on why the field is not being shown is welcomed. Maybe the Xpath expression? Thanks.

1
man you are adding the field to embaded form not the tree. you target is in the tree too check the answer. given by @ShivaGuntuku. to see if the field is added to the form in read mode click on the item to see if is added to the form.Charif DZ

1 Answers

5
votes

may be in sale.order view price_unit getting 2 times so it's confusion where to add and sale order view consist as formview and tree view for the sale orderline.here is the code you can get in view. formview:

<xpath expr="//notebook//page//field//form//field[@name='price_unit']" position="before">
    <field name="markup"/>
</xpath>

in Tree View:

<xpath expr="//notebook//page//field//tree//field[@name='price_unit']" position="before">
  <field name="markup"/>
</xpath>