单据审批后 进行拓展开发 NC中有两种方式:
- Client 端 通过XML文件配置
- 在public端进行拓展开发,需要从数据库中插入脚本
- SELECT * FROM pub_pluginitem ORDER BY ts DESC;,注册审批后执行的操作类
- 特别注意:
VMODULENAME 列注意大小写 例如:销售的都是so,但是仓库的都是IC 如果这里配置不对 会导致找不到相关的规则。
/*注意:opcnc,m30,so 大小写 否则会不执行该拦截类*/
INSERT INTO PUB_PLUGINITEM
(DR,
INDUSTRYTYPE,
IORDER,
LOCALTYPE,
PK_PLUGINITEM,
TS,
VCOMPONENTNAME,
VDESCRIPTION,
VEVENTTYPE,
VEXTENDMODULE,
VEXTENDPOINTNAME,
VEXTENDTYPE,
VMODULENAME,
VRULECLASS,
VTARGETCLASS)
VALUES
(0,
'~',
1,
'~',
'1001Z81000000000PMS1',
'2021-05-07 10:54:58',
'm30',
'销售订单删除后同步至PMS',
'after',
'opcnc',
'nc.bs.so.m30.maintain.InsertSaleOrderBP',
'addAfter',
'so',
'nc.pubimpl.so.m30.pms.rule.M30_DEL2PMS',
NULL);
- 操作类实现:
package nc.pubitf.pu.m21.pub.yc.listener;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.vo.yuncai.mall.util.OrderCheckUtil;
import nc.pubitf.pu.m21.pub.IOrderPubCpuService;
import nc.vo.pu.m21.entity.OrderVO;
import nc.vo.pub.BusinessException;
import org.apache.commons.lang.StringUtils;
public class AfterSCMPurorderApprovedPassForYC implements IBusinessListener {
@Override
public void doAction(IBusinessEvent arg0) throws BusinessException {
Object objArray = ((nc.bs.businessevent.BusinessEvent) arg0).getObject();
if(objArray instanceof Object[]){
String pk_order_h = null;
OrderVO ordObj = null;
if(((Object[])objArray)[0] instanceof OrderVO){
ordObj = (OrderVO) ((Object[])objArray)[0];
if(!OrderCheckUtil.yucaiMallFilter(ordObj.getHVO())){
if( (ordObj.getHVO().getForderstatus()==3)
|| (ordObj.getHVO().getForderstatus()==4) ){ //审批通过3,审批不通过4,采购方确认
pk_order_h = ordObj.getPrimaryKey();
}
}
}
if(!StringUtils.isEmpty(pk_order_h)){//审批后,同步到云采的数据更新为 订单已确认
NCLocator.getInstance().lookup(IOrderPubCpuService.class).approveOrderToYuncai(ordObj);
}
}
}
}