如何在默认字段odoo 8中添加on_change

时间:2016-02-19 08:01:46

标签: openerp odoo-8

我想在模块制造中添加onchange功能(mrp.production) 在view.xml中

<record model="ir.ui.view" id="partner_instructur_form_view">
        <field name="name">mrp.production.form.instructur</field>
        <field name="model">mrp.production</field>
        <field name="inherit_id" ref="mrp.mrp_production_form_view" />
        <field name="arch" type="xml">
            <xpath expr="//field[@name='location_dest_id']" position="after">
                <field name="product_qty" on_change="onchange_hitung_kuota(product_qty, prod_qtys)"/>         
                <field name="prod_qtys" on_change="onchange_hitung_kuota(product_qty, prod_qtys)"/>
                <field name="progres_persen" widget="progressbar"/>      

            </xpath> 
        </field>
</record>

在python中

class ala_mrp_prod(osv.osv):
    _inherit = 'mrp.production'

    def onchange_hitung_kuota(self, cr, uid, ids, prod_qtys, product_qty):
        kurangi = product_qty - prod_qtys
        res = {
            'value':{ 'progres_persen':  (kurangi * 100) / product_qty}
        }
        return res

    _columns = {  
        'prod_qtys':fields.integer('Jumlah Total'),
        'progres_persen': fields.float('Progres'),
    }

    _defaults = {
        'prod_qtys': 1,
    }
ala_mrp_prod()

enter image description here

  1. 为什么产品数量显示2?
  2. 所以如果我输入product_quantity 3,jumlah总共5个进步40%? 请帮忙

3 个答案:

答案 0 :(得分:1)

您以错误的顺序传递参数 {{1}}应该是{{1}}方法中的第一个:

{{1}}

答案 1 :(得分:1)

odoo new api中,您无需修改​​xml文件。你要做的是

class mrp_order(models.Model)
_inherit = 'mrp.production'

@api.onchange('product_qty', 'prod_qtys')
def onchange_hitung_kuota(self):
   kurangi = product_qty - prod_qtys
   self.progres_persen = (kurangi * 100) / self.product_qty

希望这有帮助!

答案 2 :(得分:0)

我认为你在 onchange_hitung_kuota 函数中反转了两个参数