Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
1 Balas
6961 Tampilan

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

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


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

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.

Odoo 10.



Avatar
Buang
Jawaban Terbai

Hi EM,

Just make a slight change in the given Xpath like this, make it tree instead of form

<xpath expr="//field[@name='order_line']/tree//field[@name='price_unit']" position="before">
<field name="mark_up"/>
</xpath>

Hope this can help you,

Thanks

Avatar
Buang
Post Terkait Replies Tampilan Aktivitas
2
Nov 23
7578
2
Mar 22
9886
0
Okt 20
3046
0
Agu 21
3446
7
Jun 21
13747