首页 > 其他分享 >Odoo中在明细行中实现批量编辑

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

时间:2023-12-29 19:36:47浏览次数:33  
标签:批量 行中 tree 视图 编辑 按钮 明细 Odoo


实现效果图:

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字段的场景。这不仅提高了数据处理的效率,也提升了用户体验。这样就可以巧妙的运用上官方的批量修改功能了。


标签:批量,行中,tree,视图,编辑,按钮,明细,Odoo
From: https://blog.51cto.com/u_14480405/9030037

相关文章

  • Ubuntu 20.04 安装Odoo17
    1、升级系统sudoapt-getupdate2、更新系统sudoapt-getupgrade3、查看系统Python3版本python3-V4、更新Python3.8到3.10sudoadd-apt-repositoryppa:deadsnakes/ppasudoapt-getupdate安装Python3.10sudoapt-getinstallpython3.10-y安装完成后,检查新版......
  • 自定义开发odoo14的统计在线用户人数 (续)
    上一篇是只统计在过去几分钟内有活动的用户是在线的。今天我们来处理当浏览器关闭后,才算是离线用户,否则算在线用户。 要实现当浏览器关闭后才算用户离线的功能,在Odoo中较为复杂,因为Odoo服务器端无法直接检测到客户端浏览器的关闭事件。不过,我们可以通过一种近似的方法来实......
  • 自定义开发odoo14的统计在线用户人数
    在Odoo14中统计在线人数通常涉及到定制开发或者使用特定的模块。自定义开发:如果没有现成的模块,您可能需要进行一些自定义开发。这通常涉及到扩展Odoo的用户模型,以跟踪用户的登录和登出活动。以下是一个基本的实现思路:扩展用户模型:在用户模型(通常是res.users)中添加字段来记......
  • Odoo接口说明
    通过使用PostMan调用Odoo-POST{"jsonrpc":"2.0", "params":{ "db":"factory", "login":"[email protected]", "password":"1"}}通过上面Josn格式调用系统......
  • 天池AI练习生计划 - 第三期数据分析入门与实践,火热进行中!通关赢取双重礼品!
    《Numpy实践》《Pandas实践》课程带您了解numpy与pandas的所有核心操作与特性;《Matplotlib实践》课程助您解决用python做数据可视化时面临的两大痛点。轻松来闯关,即可领取双重礼品~实训培训证书:通关两个关卡即可领取家用纯棉毛巾:通关全部关卡即可领取活动地址:https://tianchi.......
  • Odoo17_禁用从地址栏进debug模式
    1.参考odoo禁用debug模式_odoo14禁用debug-CSDN博客2.直接上代码#-*-coding:utf-8-*-fromodooimporthttpfromodoo.addons.web.controllersimporthomefromodoo.exceptionsimportUserErrorclassDebugHome(home.Home):@http.route('/web',type='ht......
  • EKP qhky 流程启接口addReview 支持明细表地址本传递多值
     问题描述: 流程启动接口(addReview),给第一行多人员地址本字段 传多个部门,后台代码解析不成功     /** * *20230703定制处理附件列表问题sjx * ***/ for(inti=0;i<attForms.size();i++){ S......
  • 515. 在每个树行中找最大值(中)
    目录题目题解:BFS题目给定一棵二叉树的根节点root,请找出该二叉树中每一层的最大值。题解:BFSBFS遍历每一层,在每一层每一个元素出队的时候更新最大值,保存每一层的最大值,最后返回即可。classSolution:deflargestValues(self,root:Optional[TreeNode])->List[in......
  • 线程池读取SAP数据(明细导入根据物料带出具体数据)
    内容以及代码参考:Java高并发核心编程(卷2):多线程、锁、JMM、JUC、高并发设计模式 场景:流程页面上,通过非标配置,明细表里的物料编码会自动根据RFC函数读取物料名称,描述,等级,采购组等具体数据 ThreadPoolExecutor线程池7大参数:corePoolSize: 核心线程数,一旦建立,不会因为超......
  • Odoo中防止用户同一时间多次点击同一按钮触发函数
    我们将探讨如何在Odoo中实现一个全局防重复点击功能,以防止用户在短时间内重复点击按钮而触发多次函数调用。这种情况通常发生在用户不断快速点击同一个按钮时,导致后端函数被多次调用,可能会引起数据错误或性能问题。在Odoo中,我们可以通过自定义模块来实现这个功能。首先,我们需要在bu......