采购订单提交校验付款单可结算金额
This commit is contained in:
parent
75fb60945e
commit
5d65083e86
|
|
@ -0,0 +1,118 @@
|
||||||
|
package tqq9.lc123.cloud.app.plugin.operate.pm;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.entity.ExtendedDataEntity;
|
||||||
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||||
|
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||||
|
import kd.bos.entity.validate.AbstractValidator;
|
||||||
|
import kd.bos.orm.query.QCP;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.bos.util.StringUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class PurOrderSubmitValidOp extends AbstractOperationServicePlugIn {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||||
|
super.onPreparePropertys(e);
|
||||||
|
e.getFieldKeys().add("purbillentry_pay.isprepay");
|
||||||
|
e.getFieldKeys().add("purbillentry_pay.tqq9_paybillno");
|
||||||
|
e.getFieldKeys().add("purbillentry_pay.tqq9_settleamount");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||||
|
super.onAddValidators(e);
|
||||||
|
e.addValidator(new AbstractValidator() {
|
||||||
|
@Override
|
||||||
|
public void validate() {
|
||||||
|
ExtendedDataEntity[] dataEntities1 = this.getDataEntities();
|
||||||
|
for (ExtendedDataEntity extendedDataEntity : dataEntities1) {
|
||||||
|
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
||||||
|
DynamicObjectCollection purbillentry_pay = dataEntity.getDynamicObjectCollection("purbillentry_pay");
|
||||||
|
//本采购订单的付款单map
|
||||||
|
Map<String, BigDecimal> map = new HashMap<>();
|
||||||
|
for (DynamicObject dynamicObject : purbillentry_pay) {
|
||||||
|
boolean isprepay = dynamicObject.getBoolean("isprepay");//是否预付
|
||||||
|
if (isprepay) {
|
||||||
|
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");//付款处理单
|
||||||
|
if (StringUtils.isNotEmpty(tqq9_paybillno)) {
|
||||||
|
BigDecimal tqq9_settleamount = dynamicObject.getBigDecimal("tqq9_settleamount") == null
|
||||||
|
? BigDecimal.ZERO : dynamicObject.getBigDecimal("tqq9_settleamount");//本次结算金额
|
||||||
|
map.put(tqq9_paybillno, tqq9_settleamount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> set = map.keySet();
|
||||||
|
if (set.size() > 0) {
|
||||||
|
DynamicObject[] pm_purorderbills = BusinessDataServiceHelper.load("pm_purorderbill",
|
||||||
|
"id,billno,purbillentry_pay.tqq9_paybillno,purbillentry_pay.isprepay,purbillentry_pay.tqq9_settleamount"
|
||||||
|
, new QFilter[]{new QFilter("purbillentry_pay.tqq9_paybillno", QCP.in, set)});
|
||||||
|
//历史采购订单的付款单map
|
||||||
|
Map<String, BigDecimal> settleMap = new HashMap<>();
|
||||||
|
if (null != pm_purorderbills && pm_purorderbills.length > 0) {
|
||||||
|
for (DynamicObject pm_purorderbill : pm_purorderbills) {
|
||||||
|
DynamicObjectCollection purbillentry_pay1 = pm_purorderbill.getDynamicObjectCollection("purbillentry_pay");
|
||||||
|
for (DynamicObject dynamicObject : purbillentry_pay1) {
|
||||||
|
boolean isprepay = dynamicObject.getBoolean("isprepay");//是否预付
|
||||||
|
if (isprepay) {
|
||||||
|
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");//付款处理单
|
||||||
|
if (StringUtils.isNotEmpty(tqq9_paybillno) && set.contains(tqq9_paybillno)) {
|
||||||
|
BigDecimal tqq9_settleamount = dynamicObject.getBigDecimal("tqq9_settleamount") == null
|
||||||
|
? BigDecimal.ZERO : dynamicObject.getBigDecimal("tqq9_settleamount");//本次结算金额
|
||||||
|
if (!settleMap.containsKey(tqq9_paybillno)) {
|
||||||
|
settleMap.put(tqq9_paybillno, tqq9_settleamount);
|
||||||
|
} else {
|
||||||
|
BigDecimal bigDecimal = settleMap.get(tqq9_paybillno);
|
||||||
|
settleMap.put(tqq9_paybillno, tqq9_settleamount.add(bigDecimal));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DynamicObject[] cas_paybills = BusinessDataServiceHelper.load("cas_paybill",
|
||||||
|
"id,billno,unsettleamount"
|
||||||
|
, new QFilter[]{new QFilter("billno", QCP.in, set)});
|
||||||
|
Map<String, BigDecimal> unSettleMap = new HashMap<>();
|
||||||
|
for (DynamicObject cas_paybill : cas_paybills) {
|
||||||
|
String casPayBillNo = cas_paybill.getString("billno");
|
||||||
|
BigDecimal unsettleamount = cas_paybill.getBigDecimal("unsettleamount") == null
|
||||||
|
? BigDecimal.ZERO : cas_paybill.getBigDecimal("unsettleamount");//未结算金额
|
||||||
|
if (settleMap.containsKey(casPayBillNo)) {
|
||||||
|
BigDecimal settleAmount = settleMap.get(casPayBillNo);
|
||||||
|
BigDecimal subtract = unsettleamount.subtract(settleAmount);
|
||||||
|
unSettleMap.put(casPayBillNo, subtract);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String casPayBillNo : set) {
|
||||||
|
BigDecimal amount = map.get(casPayBillNo);//此次结算金额
|
||||||
|
if (unSettleMap.containsKey(casPayBillNo)) {
|
||||||
|
BigDecimal unSettleAmount = unSettleMap.get(casPayBillNo);
|
||||||
|
//此次结算金额>剩余可结算金额提示
|
||||||
|
if (amount.compareTo(unSettleAmount) > 0) {
|
||||||
|
this.addErrorMessage(extendedDataEntity, "付款单:" + casPayBillNo + "可结算金额不足");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue