|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题由来:
自助申请作为领料单使用的时候在流程状态变为APPR或者更改状态为APPR的时候,系统会自动去判断库存数量是否满足要求,如果不满足要求就提示,现在用户要求在填写物料数量的时候就做判断。
实现思路:
在MRLINE的qty字段编写校验类。
说明:
以下代码只是实现思路,并为实现完善的业务逻辑:
源码:
public void action() throws MXException, RemoteException {
super.action();
MRLine mrline = (MRLine) getMboValue().getMbo();
if (getMboValue().isNull())
return;
//add by w39 for MRline 数量检查
double dcurbal = 0.0;//库存量
double reservedqty = 0.0;//预留量
double mrlineqty = getMboValue().getDouble();
String stiemnum = mrline.getString("itemnum");
MRLineRemote mrlineremote = (MRLineRemote)getMboValue().getMbo();
if (mrlineqty > 0) {
// 获得库存余量
SqlFormat sqlformat = new SqlFormat("itemnum=:1");
sqlformat.setObject(1, "invbalances", "itemnum", stiemnum);
MboRemote mbosetremote = mrline.getMboSet("$curbal", "INVBALANCES", sqlformat.format()).getMbo(0);
SqlFormat sqlformat1 = new SqlFormat("itemnum=:1");
sqlformat.setObject(1, "invreserve", "itemnum", stiemnum);
MboRemote mbosetremote1 = mrline.getMboSet("$reservedqty", "INVRESERVE", sqlformat.format()).getMbo(0);
if(null != mbosetremote){
dcurbal = mbosetremote.getDouble("curbal");
if(null != mbosetremote1){
reservedqty = mbosetremote1.getDouble("reservedqty");
}else{
reservedqty = 0.0;
}
//System.out.println("dcurbal="+dcurbal+" reservedqty="+reservedqty+" dcurbal - dreserveqty="+(dcurbal - reservedqty));
if((dcurbal - reservedqty) < mrlineqty ){
throw new MXApplicationException("inventory", "negativeAvailisNotAllowed");
}
}
}else{
return;
}
}
另外一个思路就是直接调用实现状态变为APPR时候的检查代码。大家有兴趣可以讨论一下 |
|