单据保存或审批动作后 后端扩展

业务场景
1. 与WMS集成,其他出库单保存后 下发WMS,在nc.bs.ic.m4i.insert.InsertBP 中添加addAfterRule。问题:因为其他出库,调拨出库等都是共用的基础类。在InsertBP 中添加的规则 还会走预置代码 添加其他的规则类,导致先执行下发WMS的rule,后面执行预置的rule 其中有现存量校验,如果超现存量就会抛异常单据回滚,但已经下发WMS的是无法回滚的。
2. 解决方法:

  1. 通过数据库脚本添加预置类,该方法可行 但是需要注意一些配置参数 区分VMODULENAME 大小写,详细看NC审批后操作 扩展开发
    VMODULENAME 为大写,如果是销售则为小写so
INSERT INTO PUB_PLUGINITEM
  (DR,
   INDUSTRYTYPE,
   IORDER,
   LOCALTYPE,
   PK_PLUGINITEM,
   TS,
   VCOMPONENTNAME,
   VDESCRIPTION,
   VEVENTTYPE,
   VEXTENDMODULE,
   VEXTENDPOINTNAME,
   VEXTENDTYPE,
   VMODULENAME,
   VRULECLASS,
   VTARGETCLASS)
VALUES
  (0,
   '~',
   1,
   '~',
   '1001Z81000000000PMS9',
   '2021-07-21 12:19:19',
   'm4331',
   '其他出库单保存同步至WMS',
   'after',
   'ic',
   'nc.bs.ic.m4i.insert.InsertBP',
   'addAfter',
   'IC',
   'nc.pubimpl.nc2wms.syn.rule.m4i.M4I_SaveRule',
   NULL);
  1. 代码添加
public void addAfterRule(GeneralOutVO[] vos, AroundProcesser<GeneralOutVO> processor) {
		processor.addAfterRule(new AfterInsertRuleForRewrite4K());
		processor.addAfterRule(new AfterInsertRuleForRewriteSpecial());
		processor.addAfterRule(new InsertRewriteRM());
		processor.addAfterRule(new RewriteQCInsertRule());
		processor.addAfterRule(new InsReWriteSapplyBillRule());
		processor.addAfterRule(new InsReWriteBuyingReqRule());
		processor.addAfterRule(new InsReWriteMatterAppRule());
		
		/*
		  * add by xuchong 2021-7-21
		  * 下发WMS
		  * */
		//默认添加方法
		//processor.addAfterRule(new M4I_SaveRule());
		//默认添加在预置基础规则的首个
		//((ICAroundProcesser) processor).addAfterRule(new M4I_SaveRule());
		//添加在规则的最初处
		//((ICAroundProcesser) processor).setBeforeRuleAtHead(new M4I_SaveRule());
		//添加在规则的最尾处
		((ICAroundProcesser) processor).setAfterRuleAtTail(new M4I_SaveRule());
	}
((ICAroundProcesser) processor).setAfterRuleAtTail(new M4I_SaveRule()); 
该代码是添加到所有规则的最尾处。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值