到货单已生成下游检验单时,到货单需要增加控制不能收回
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