【问题标题】:Odoo - calculation on add or edit of one2many fieldOdoo - 添加或编辑 one2many 字段的计算
【发布时间】:2017-08-07 14:32:23
【问题描述】:

我在客户表单中有客户和存款字段,实际上是 one2many,但用户在存款中添加一行并提交或编辑一些现有的。我想对那个事件做一些计算。我尝试了onchange 和compute,但都不起作用。

【问题讨论】:

  • 您能否从您的代码中添加一段带有 XML 字段和 Python 字段以及您尝试过的内容的摘录?

标签: openerp odoo-8 odoo-9 odoo-10 odoo-view


【解决方案1】:

添加或编辑 One2many 字段是 FormView。

所以你只需将你要做什么计算的字段放在 FormView *.xml 中

例如。使用我的 SUM 字段

        <record model="ir.ui.view" id="view_nstda_bst_dbill_form">
            <field name="name">nstda.bst.dbill.form</field>
            <field name="model">nstda.bst.dbill</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="nstda_bst_dbill" class="nstda_bst_dbill_form" >
                    <group>
                        <field name="status" invisible="1" />
                        <field name="matno" />
<!--                        <field name="matdesc" /> -->

                        <label for="balance" />
                        <div>
                            <field name="balance" style="width: 20%%" />
                            <field name="uom_1" style="width: 10%%;" 
                                attrs="{'invisible':[('matno','=',False)]}" />
                        </div>

                        <label for="balance_rs" />
                        <div>
                            <field name="balance_rs" style="color:Red;width: 20%%" />
                            <field name="uom_2" style="width: 10%%;" 
                                attrs="{'invisible':[('matno','=',False)]}" />
                        </div>

                        <label for="qty" />
                        <div>
                            <field name="qty" style="width: 20%%" 
                                attrs="{'required':[('status','in',['draft','edit',False])]}" />
                            <field name="uom" style="width: 10%%;" 
                                attrs="{'invisible':[('matno','=',False)]}" />
                        </div>

<!--                        <field name="unitprice" /> -->
                        <label for="unitprice" />
                        <div>
                            <field name="unitprice" style="width: 20%%" />
                            <field name="currency" style="width: 10%%;" />
                        </div>

                        <field name="sum" invisible="1" />
                        <field name="dbill_discount_sum" invisible="1" />
                    </group>
                </form>
            </field>
        </record>

而 *.py 方面是...

例如

@api.one
@api.onchange('qty','matno')
@api.depends('qty','matno')
def _set_sum(self):
    self.sum  = self.unitprice * self.qty


sum = fields.Float(string="summary", store=True, compute='_set_sum')
matno = fields.Many2one('bst.stock', 'matno')
qty = fields.Integer('qty')

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多