Acumatica 2020R2供应商发票集成后审批工作流激活咨询
Acumatica 2020R2 AP发票集成阶段临时停用审批方案
该需求完全可以实现,核心思路是通过自定义字段标记集成状态,结合审批流触发条件调整、Persist逻辑扩展完成控制,具体实现步骤如下:
1. 新增集成状态标识字段
打开定制项目,给APInvoice DAC新增布尔类型自定义字段,命名为UsrIsIntegrationCompleted,默认值设为false,用于区分发票是否完成第三方系统集成。
2. 调整审批流触发规则
- 进入定制模块的工作流配置界面,找到*供应商发票(屏幕ID
AP301000)*对应的审批工作流 - 修改审批启动条件,新增规则:仅当
UsrIsIntegrationCompleted = true与原有审批触发条件同时满足时,才启动审批流程,未完成集成的发票不会进入审批队列。
3. 扩展Persist方法适配集成场景
如果需要在Persist阶段临时跳过审批校验,可扩展APInvoiceEntry图的Persist方法,示例代码如下:
public class APInvoiceEntryExt : PXGraphExtension<APInvoiceEntry> { public delegate void PersistDelegate(); [PXOverride] public void Persist(PersistDelegate baseMethod) { APInvoice currentInvoice = Base.Document.Current; if (currentInvoice != null) { // 自定义判断逻辑:当前是否为集成接口调用场景 bool isIntegrationCall = /* 你的集成场景判断逻辑,例如接口标识、调用来源标记等 */; if (isIntegrationCall) { // 临时停用当前单据的审批校验 Base.approval.Disable(); } } // 执行原生Persist逻辑 baseMethod(); // 集成操作完成后更新状态,触发审批流 if (/* 集成逻辑执行完毕的判断条件 */) { var invoiceExt = currentInvoice.GetExtension<APInvoiceExt>(); invoiceExt.UsrIsIntegrationCompleted = true; Base.Document.Update(currentInvoice); Base.Persist(); // 手动刷新审批状态,触发审批流初始化 Base.approval.UpdateApproval(currentInvoice); } } }
注意事项
- 若使用Acumatica自带的审批分配功能而非自定义工作流,可直接在审批分配规则中添加
UsrIsIntegrationCompleted = true的过滤条件,效果一致。 - 集成完成后调用
UpdateApproval方法即可自动触发审批流程,无需手动修改单据状态。
内容的提问来源于stack exchange,提问作者sadok hanini
相关产品推荐
相关产品推荐

