精密-启源领料-单据日期赋值-代码调整,需要在开关账检查之前赋值

This commit is contained in:
mzr 2025-10-27 11:06:28 +08:00
parent 79177e6f96
commit 15790ede83
4 changed files with 61 additions and 60 deletions

View File

@ -8,7 +8,6 @@ import nc.bs.ic.general.insert.rule.before.InsertBeforeEventRule;
import nc.bs.ic.general.rule.after.AfterInsertRuleForRewriteSpecial;
import nc.bs.ic.general.rule.after.AtpAfterUpdate;
import nc.bs.ic.general.rule.before.CtplcustomeridCheck;
import nc.bs.ic.m45.insert.rule.PurchaseInProjectRule;
import nc.bs.ic.m4d.base.BPPlugInPoint;
import nc.bs.ic.m4d.base.MaterialOutCheckRule;
import nc.bs.ic.m4d.base.MaterialOutValueProcRule;
@ -109,7 +108,7 @@ public class InsertBP implements IInsertBP<MaterialOutVO>,
//2025年6月13日09点38分 -- 物料档案基本页签启用项目辅助属性+库存组织未启用项目采购入库单保存时包含接口导入清除行项目材料出库单保存时包含接口导入清除行项目
processor.addBeforeRule(new MaterialOutProjectRule());
processor.addBeforeRule(new MaterialOutBillDateRule());
// processor.addBeforeRule(new MaterialOutBillDateRule());
}
@Override

View File

@ -1,57 +0,0 @@
package nc.bs.ic.m4d.insert.rule;
import nc.bs.ic.pub.base.ICRule;
import nc.bs.uapbd.util.MyHelper;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.ic.general.define.ICBillHeadVO;
import nc.vo.ic.general.define.ICBillVO;
import nc.vo.ic.m4d.entity.MaterialOutVO;
import nc.vo.org.StockOrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDate;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
/**
* 精密-材料出库新增-单据日期赋值-启源领料
*
* @author mzr
* @date 2025/10/26
*/
public class MaterialOutBillDateRule extends ICRule<MaterialOutVO> {
@Override
public void process(MaterialOutVO[] vos) {
if (MMValueCheck.isEmpty(vos)) {
return;
}
try {
for (ICBillVO vo : vos) {
ICBillHeadVO headVO = vo.getParentVO();
String pk_org = (String) headVO.getAttributeValue("pk_org");
String orgCode = MyHelper.transferField(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, pk_org);
// 启源领料id
String vdef9 = headVO.getVdef9();
if ("C038".equals(orgCode) && MMValueCheck.isNotEmpty(vdef9)) {
// 启源传入的单据单据日期增加校验
UFDate dbilldate = headVO.getDbilldate();
// 设置单据日期, 如果单据日期小于2025-11-02则单据日期设置为2025-11-02
UFDate ufDate = new UFDate("2025-11-02");
if (dbilldate != null) {
int i = dbilldate.compareTo(ufDate);
if (i < 0) {
headVO.setDbilldate(ufDate);
}
} else {
UFDate nowDate = new UFDate();
int i = nowDate.compareTo(ufDate);
if (i < 0) {
headVO.setDbilldate(ufDate);
}
}
}
}
} catch (BusinessException e) {
ExceptionUtils.wrappException(e);
}
}
}

View File

@ -133,7 +133,7 @@ public class InsertBPTemplate<T extends ICBillVO> extends
//组织停用检查
processor.addBeforeRule(new ICStockOrgEnableCheckRule<T>());
// 精密-单据日期检查
// processor.addBeforeRule(new MaterialOutBillDateRule<T>());
processor.addBeforeRule(new MaterialOutBillDateRule<T>());
// 开关账检查
processor.addBeforeRule(new BaseAccountStatusCheck<T>());
// 总数量体积计算

View File

@ -0,0 +1,59 @@
package nc.bs.ic.general.rule.before;
import nc.bs.ic.pub.base.ICRule;
import nc.bs.uapbd.util.MyHelper;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.ic.general.define.ICBillHeadVO;
import nc.vo.ic.general.define.ICBillVO;
import nc.vo.ic.m4d.entity.MaterialOutVO;
import nc.vo.org.StockOrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDate;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
/**
* 精密-材料出库新增-单据日期赋值-启源领料
*
* @author mzr
* @date 2025/10/26
*/
public class MaterialOutBillDateRule<E extends ICBillVO> extends ICRule<E> {
@Override
public void process(E[] vos) {
if (MMValueCheck.isEmpty(vos)) {
return;
}
try {
for (ICBillVO vo : vos) {
if (vo instanceof MaterialOutVO) {
ICBillHeadVO headVO = vo.getParentVO();
String pk_org = (String) headVO.getAttributeValue("pk_org");
String orgCode = MyHelper.transferField(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, pk_org);
// 启源领料id
String vdef9 = headVO.getVdef9();
if ("C038".equals(orgCode) && MMValueCheck.isNotEmpty(vdef9)) {
// 启源传入的单据单据日期增加校验
UFDate dbilldate = headVO.getDbilldate();
// 设置单据日期, 如果单据日期小于2025-11-02则单据日期设置为2025-11-02
UFDate ufDate = new UFDate("2025-11-02");
if (dbilldate != null) {
int i = dbilldate.compareTo(ufDate);
if (i < 0) {
headVO.setDbilldate(ufDate);
}
} else {
UFDate nowDate = new UFDate();
int i = nowDate.compareTo(ufDate);
if (i < 0) {
headVO.setDbilldate(ufDate);
}
}
}
}
}
} catch (BusinessException e) {
ExceptionUtils.wrappException(e);
}
}
}