到货单已生成下游检验单时,到货单需要增加控制不能收回

This commit is contained in:
hefengkai 2024-10-25 16:50:06 +08:00
parent 57b55e1e40
commit 9700d1d147
1 changed files with 138 additions and 0 deletions

View File

@ -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"));
}
}