到货单已生成下游检验单时,到货单需要增加控制不能收回
This commit is contained in:
parent
57b55e1e40
commit
9700d1d147
|
@ -0,0 +1,138 @@
|
|||
package nc.impl.pu.m23.approve.rule;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.itf.pu.reference.ic.M45PUServices;
|
||||
import nc.itf.pu.reference.ic.M47PUServices;
|
||||
import nc.vo.ml.NCLangRes4VoTransl;
|
||||
import nc.vo.pu.m23.entity.ArriveItemVO;
|
||||
import nc.vo.pu.m23.entity.ArriveVO;
|
||||
import nc.vo.pu.pub.util.ApproveFlowUtil;
|
||||
import nc.vo.pub.lang.UFBoolean;
|
||||
import nc.vo.pub.lang.UFDouble;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pattern.pub.MathTool;
|
||||
import nc.vo.scmpub.res.billtype.IBillType;
|
||||
import nc.vo.scmpub.res.billtype.POBillType;
|
||||
import nc.vo.scmpub.res.billtype.SCBillType;
|
||||
|
||||
|
||||
public class ChkCanUnApproveRule
|
||||
extends Object
|
||||
implements IRule<ArriveVO>
|
||||
{
|
||||
public void process(ArriveVO[] voArray) {
|
||||
for (ArriveVO aggVO : voArray)
|
||||
{
|
||||
chkCanUnApprove(aggVO);
|
||||
}
|
||||
|
||||
checkHasPurchaseIn(voArray);
|
||||
|
||||
checkHasSubcontIn(voArray);
|
||||
}
|
||||
|
||||
private void checkHasPurchaseIn(ArriveVO[] vos) {
|
||||
List<String> hidLst = getHIDSourceFrom(vos, POBillType.Order);
|
||||
if (hidLst.size() == 0) {
|
||||
return;
|
||||
}
|
||||
Map<String, UFBoolean> hidMap = M45PUServices.getMapBysrcHid((String[])hidLst
|
||||
.toArray(new String[hidLst.size()]));
|
||||
if (null == hidMap || hidMap.size() == 0) {
|
||||
return;
|
||||
}
|
||||
for (UFBoolean value : hidMap.values()) {
|
||||
if (UFBoolean.TRUE.equals(value)) {
|
||||
throwHasStoreInExp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkHasSubcontIn(ArriveVO[] vos) {
|
||||
List<String> hidLst = getHIDSourceFrom(vos, SCBillType.Order);
|
||||
if (hidLst.size() == 0) {
|
||||
return;
|
||||
}
|
||||
if (M47PUServices.hasFromSource(hidLst)) {
|
||||
throwHasStoreInExp();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void chkCanUnApprove(ArriveVO aggVO) {
|
||||
if (!ApproveFlowUtil.isCanUnApprove(aggVO)) {
|
||||
String message = NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0122");
|
||||
ExceptionUtils.wrappBusinessException(message);
|
||||
}
|
||||
|
||||
ArriveItemVO[] itemVOArray = aggVO.getBVO();
|
||||
for (int i = 0; i < itemVOArray.length; i++) {
|
||||
|
||||
if (MathTool.nvl(itemVOArray[i].getNaccumstorenum()).doubleValue() > 0.0D) {
|
||||
throwHasStoreInExp();
|
||||
}
|
||||
if (itemVOArray[i].getBfaflag().booleanValue())
|
||||
{
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0124"));
|
||||
}
|
||||
|
||||
if (MathTool.nvl(itemVOArray[i].getNaccumreplnum()).doubleValue() > 0.0D)
|
||||
{
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0125"));
|
||||
}
|
||||
|
||||
if (aggVO.getHVO().getBisback() == null || !aggVO.getHVO().getBisback().booleanValue())
|
||||
{
|
||||
if (MathTool.nvl(itemVOArray[i].getNaccumchecknum())
|
||||
.doubleValue() > 0.0D)
|
||||
{
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0126"));
|
||||
}
|
||||
}
|
||||
|
||||
if (MathTool.nvl(itemVOArray[i].getNaccumletgonum()).doubleValue() > 0.0D)
|
||||
{
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0127"));
|
||||
}
|
||||
|
||||
if (UFBoolean.TRUE.equals(itemVOArray[i].getBtransasset()))
|
||||
{
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0128"));
|
||||
}
|
||||
|
||||
if (itemVOArray[i].getNaccumbacknum() != null &&
|
||||
!UFDouble.ZERO_DBL.equals(itemVOArray[i]
|
||||
.getNaccumbacknum()))
|
||||
{
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0192"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<String> getHIDSourceFrom(ArriveVO[] vos, IBillType bt) {
|
||||
List<String> hidLst = new ArrayList<String>();
|
||||
for (ArriveVO vo : vos) {
|
||||
for (ArriveItemVO item : vo.getBVO()) {
|
||||
if (bt.getCode().equals(item.getCsourcetypecode())) {
|
||||
hidLst.add(item.getPk_arriveorder());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return hidLst;
|
||||
}
|
||||
|
||||
private void throwHasStoreInExp() {
|
||||
ExceptionUtils.wrappBusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0123"));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue