实现效果图:

Odoo中在明细行中实现批量编辑_表单

在使用Odoo ERP系统时,我们经常需要对大量数据进行批量编辑。Odoo的tree视图提供了一个非常方便的界面来查看和编辑记录,但它默认不支持在one2many字段上的批量编辑。本文将介绍如何通过在form视图中添加一个特殊按钮,来实现在one2many字段的tree视图中进行批量编辑的功能。

问题背景

Odoo官方的tree视图支持multi_edit属性,这使得用户可以在列表视图中轻松地选择多条记录进行编辑。然而,这个功能默认不适用于嵌入在表单中的one2many字段。为了解决这个问题,我们可以采用以下方法。

解决方案

解决方案的关键是在form视图中定义一个按钮,当点击这个按钮时,它将打开一个新的tree视图,显示当前记录的相关明细,从而允许用户进行批量编辑。

步骤1: 定义按钮

在表单视图的XML定义中,添加以下按钮元素:

<button string="Multi Edit" class="oe_highlight" type="object" name="button_open_tree_view"/>

这个按钮被定义为一个对象类型的操作,将触发一个名为button_open_tree_view的Python方法。

步骤2: 创建动作方法

在相应的Odoo模型中,定义button_open_tree_view方法:

def button_open_tree_view(self):
    action = {
        'type': 'ir.actions.act_window',
        'name': 'Multi edit',
        'view_mode': 'tree',
        'target': 'new',
        'res_model': 'domestic.expense.line',
        'domain': [('id', 'in', self.expense_line.ids)],
    }
    return action

这个方法创建了一个动作,它打开一个新窗口,显示当前记录的domestic.expense.line明细行。

步骤3: 视图代码

<record id="domestic_expense_line_view_tree" model="ir.ui.view">
    <field name="name">Domestic Expense Line View Tree</field>
    <field name="model">domestic.expense.line</field>
    <field name="arch" type="xml">
        <tree create="0" delete="0" multi_edit="1" editable="bottom" sample="1">
            <field name="sequence" optional="hide"/>
            <field name="location" optional="hide"/>
            <field name="expense_type" optional="show"/>
            <field name="tax_rate" optional="hide"/>
            <field name="cost_center" optional="hide"/>
            <field name="profit_center" optional="hide"/>
            <field name="brand_id" optional="hide"/>
            <field name="custom_id" optional="hide"/>
            <field name="service_no" optional="hide"/>
            <field name="valid_from" optional="hide"/>
            </tree>
            </field>
        </record>

步骤4: 批量编辑功能

用户现在可以在弹出的tree视图中选择多条记录,并利用Odoo的标准批量编辑功能来编辑它们。

结论

通过上述步骤,我们可以在Odoo中实现一个方便的批量编辑功能,尤其适用于处理one2many字段的场景。这不仅提高了数据处理的效率,也提升了用户体验。这样就可以巧妙的运用上官方的批量修改功能了。