|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服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时候的检查代码。大家有兴趣可以讨论一下 |
|