查询Dynamics AX 2009中销售订单及行创建完成过账结束的触发时点
Dynamics AX 2009 销售订单过账完成后自定义代码触发位置
符合你要求的触发点共有两类,可根据实际业务场景选择:
1. 标准过账场景首选:SalesFormLetter类run方法末尾
- 适用场景:所有走系统标准过账流程(发货过账、发票过账、合并过账等)的销售订单
- 触发逻辑说明:
SalesFormLetter是AX 2009所有销售过账逻辑的核心基类,run方法的super()调用完成后,就代表整个过账事务已经提交,SALESTABL头、SALESLINE行以及所有关联过账台账数据都已完全落库,不存在回滚风险,完全匹配你要的「全流程完成后触发」的需求。 - 实现提示:在
run方法super()执行完成后添加判断,仅当过账状态为成功、且过账类型符合你的业务要求时,读取当前过账的销售订单编号,按顺序遍历关联的SALESLINE行执行自定义逻辑即可。
2. 全场景覆盖可选:SALESTABLE表update方法后置逻辑
- 适用场景:需要覆盖前端手动过账、后台批量接口创建过账等所有订单完成场景
- 触发逻辑说明:销售订单全流程过账完成后,
SALESTABLE的DocumentStatus字段会更新为对应的最终状态(如已开票),你可以在update方法的super()执行完成后,添加状态变更判断,仅当订单从非最终状态更新为你需要的最终过账状态时,再触发自定义逻辑。 - 注意事项:需要额外添加幂等校验,比如给
SALESTABLE加一个自定义布尔字段标记自定义逻辑是否已执行,避免同一个订单多次触发重复执行。
注意:不要直接在
SALESTABL或SALESLINE的insert方法中添加逻辑,销售订单创建和过账处于同一个数据库事务中,insert触发时事务还未提交,一旦后续过账校验失败回滚,你的自定义代码已执行的操作无法同步回滚,会导致数据不一致。
内容的提问来源于stack exchange,提问作者Bekir Ozpozan
相关产品推荐
相关产品推荐

