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

如何修改采购订单上Create Prepayment操作按钮的逻辑?

定制Acumatica采购订单「Create Prepayment」操作的方案

不需要直接修改CodeRepository.xml文件,Acumatica支持通过**图扩展(Graph Extension)**实现该操作的定制,完全无需改动系统原生XML文件,这也是符合Acumatica开发最佳实践的方式。

具体实现步骤

  • 第一步:创建POOrderEntry的图扩展,重写CreatePrepayment方法
    在自定义项目中创建继承自PXGraphExtension<POOrderEntry>的类,利用PXOverride特性覆盖原有操作逻辑。示例代码如下:
    public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
    {
        [PXOverride]
        public void CreatePrepayment(Action baseMethod)
        {
            // 执行原方法的前置必要操作,比如保存当前采购订单
            Base.Save.Press();
    
            // 初始化预付款页面图实例
            var target = PXGraph.CreateInstance<APInvoiceEntry>();
            var prepaymentExt = target.GetExtension<APInvoiceEntryExt.Prepayments>();
    
            // 插入你的定制逻辑,比如修改预付款字段、添加自定义校验、调整关联规则等
            // 示例:给预付款添加定制化描述
            prepaymentExt.AddPOOrderProc(Base.Document.Current, true);
            if (target.Document.Current != null)
            {
                target.Document.Current.Description = $"定制预付款:关联采购订单 {Base.Document.Current.OrderNbr}";
            }
    
            // 弹窗打开定制后的预付款页面
            throw new PXPopupRedirectException(target, "New Prepayment", true);
        }
    }
    
  • 第二步:部署并激活扩展
    将该扩展类部署到Acumatica环境,系统会自动识别并替换原生的CreatePrepayment操作逻辑。

关键说明

  • 避免修改系统原生文件:CodeRepository.xml是Acumatica自动生成的元数据文件,直接修改会导致后续版本升级时定制内容丢失,且违反系统开发规范。
  • PXOverride特性的作用:该特性允许在扩展类中重写原图的方法,无需改动原生代码。你可以选择完全替换原逻辑,也可以在原逻辑的前后插入自定义处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:10:10