You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iDempiere单窗口实现两个不同Create Line From的定制方案问询

在iDempiere同一窗口实现两个独立的Create Line From功能

我之前刚好做过类似的iDempiere定制需求,给你梳理下具体的实施步骤,亲测能解决这个问题:

核心思路

本质是给目标窗口新增一个独立的「Create Line From」按钮,绑定自定义的业务逻辑类,和原生按钮的逻辑完全隔离,同时通过权限控制满足客户的安全要求——不同用户可以按需使用不同的功能。

具体实施步骤

1. 新增第二个Create Line From按钮

打开iDempiere系统管理模块,找到你要定制的目标窗口:

  • 进入【窗口/标签/字段】界面,切换到「按钮」标签页
  • 点击新增按钮,配置信息如下:
    • 名称:比如 Create Lines From (Custom)(清晰区分原生按钮)
    • 动作:选择 Special
    • 动作代码:填一个唯一标识,比如 CreateLinesFromCustom(后续Java类要绑定这个值)
    • 权限组:建议新建一个独立的权限组,方便后续控制按钮的可见性/可用性

2. 开发自定义处理逻辑类

iDempiere的原生Create Line From逻辑都封装在CreateFrom相关的Java类中,我们可以基于这个模板扩展:

  • 找到对应窗口的原生类(比如销售订单对应CreateFromOrder.java),复制一份并重命名为CreateFromCustom.java
  • 修改类中的核心逻辑:
    • 重写init()方法:调整弹窗标题(比如改成「自定义创建行数据」)、配置要显示的字段列
    • 重点重写prepareIt()和saveIt()方法:在这里实现你的自定义数据获取逻辑(比如过滤特定数据源、添加安全校验、关联专属基础数据等)
    • 绑定动作代码:在类的static代码块中注册我们之前设置的动作标识,示例:
      static {
          s_commands.put("CreateLinesFromCustom", CreateFromCustom.class);
      }
      
  • 将编译后的.class文件放到iDempiere的lib/custom目录下,或者打包成插件部署(推荐插件方式,方便后续维护)

3. 自定义弹窗配置(可选)

如果原生弹窗的字段布局不符合你的需求,可以新建一个专属弹窗窗口:

  • 在系统管理中新建一个窗口,配置你需要的字段和过滤条件
  • 在CreateFromCustom.java中重写getAD_Window_ID()方法,指定新建窗口的ID:
    @Override
    protected int getAD_Window_ID() {
        return 12345; // 替换成你新建窗口的实际ID
    }
    
  • 给这个弹窗窗口配置对应的权限,确保只有授权用户能访问

4. 权限控制与功能测试

  • 进入【角色】配置界面,给需要使用自定义功能的角色分配新按钮的权限;原生按钮的权限可以根据客户要求保留或移除
  • 登录测试账号,打开目标窗口:
    • 确认两个按钮正常显示(未授权用户看不到自定义按钮)
    • 分别点击两个按钮,验证数据逻辑:原生按钮走原有规则,自定义按钮走你开发的新逻辑
    • 测试异常场景(比如无数据、权限不足),确保提示友好

关键注意事项

  • 开发时遵循iDempiere规范:优先使用PO对象操作数据,避免直接写硬编码SQL,保证多租户兼容性
  • 做好异常捕获与处理,比如数据为空时的提示、权限校验失败的报错
  • iDempiere版本升级时,记得备份自定义类,避免被系统默认文件覆盖

内容的提问来源于stack exchange,提问作者dwir182

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:57:07