diff --git a/lc123/cloud/app/plugin/operate/pm/PurOrderSubmitValidOp.java b/lc123/cloud/app/plugin/operate/pm/PurOrderSubmitValidOp.java index 28b4014..c94c28a 100644 --- a/lc123/cloud/app/plugin/operate/pm/PurOrderSubmitValidOp.java +++ b/lc123/cloud/app/plugin/operate/pm/PurOrderSubmitValidOp.java @@ -16,13 +16,14 @@ 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("billno"); e.getFieldKeys().add("purbillentry_pay.isprepay"); e.getFieldKeys().add("purbillentry_pay.tqq9_paybillno"); e.getFieldKeys().add("purbillentry_pay.tqq9_settleamount"); @@ -54,9 +55,12 @@ public class PurOrderSubmitValidOp extends AbstractOperationServicePlugIn { Set 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)}); + , new QFilter[]{new QFilter("purbillentry_pay.tqq9_paybillno", QCP.in, set) + , new QFilter("billno", QCP.not_equals, dataEntity.getString("billno")) + , new QFilter("billstatus", QCP.in, new String[]{"B","C"})}); //历史采购订单的付款单map Map settleMap = new HashMap<>(); if (null != pm_purorderbills && pm_purorderbills.length > 0) { @@ -81,29 +85,26 @@ public class PurOrderSubmitValidOp extends AbstractOperationServicePlugIn { } } + //每个付款单的未结算金额 DynamicObject[] cas_paybills = BusinessDataServiceHelper.load("cas_paybill", - "id,billno,unsettleamount" + "id,billno,actpayamt" , new QFilter[]{new QFilter("billno", QCP.in, set)}); Map 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); - } + BigDecimal actpayamt = cas_paybill.getBigDecimal("actpayamt") == null + ? BigDecimal.ZERO : cas_paybill.getBigDecimal("actpayamt");//付款金额 + unSettleMap.put(casPayBillNo, actpayamt); } 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 + "可结算金额不足"); - } + BigDecimal amount = map.get(casPayBillNo) == null ? BigDecimal.ZERO : map.get(casPayBillNo);//此次结算金额 + BigDecimal actpayamt = unSettleMap.get(casPayBillNo) == null ? BigDecimal.ZERO : unSettleMap.get(casPayBillNo);//付款单付款金额 + BigDecimal settleamount = settleMap.get(casPayBillNo) == null ? BigDecimal.ZERO : settleMap.get(casPayBillNo);//历史已结算金额 + BigDecimal leftAmount = actpayamt.subtract(settleamount);//剩余结算金额 + //此次结算金额>剩余可结算金额提示 + if (amount.compareTo(leftAmount) > 0) { + this.addErrorMessage(extendedDataEntity, "付款单:" + casPayBillNo + "可结算金额不足"); } }