diff --git a/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java b/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java index cd49599..47a7fb3 100644 --- a/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java +++ b/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java @@ -29,10 +29,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.user.UserServiceHelper; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.EventObject; -import java.util.List; +import java.util.*; /** * 采购订单界面插件 @@ -82,12 +79,48 @@ public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implemen int rowIndex = selectRows[0]; ListSelectedRow listSelectedRow = ((ListSelectedRowCollection) returnData).get(0); DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(listSelectedRow.toString(), "cas_paybill"); - BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount"); + if (null != dynamicObject) { + //查询非当前订单,已提交已审核的订单 + 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, dynamicObject.getString("billno")) + , new QFilter("billno", QCP.not_equals, this.getModel().getValue("billno")) + , new QFilter("billstatus", QCP.in, new String[]{"B", "C"})}); + //历史采购订单的付款单map + Map settleMap = new HashMap<>(); + if (null != pm_purorderbills && pm_purorderbills.length > 0) { + for (DynamicObject pm_purorderbill : pm_purorderbills) { + DynamicObjectCollection purbillentry_pay = pm_purorderbill.getDynamicObjectCollection("purbillentry_pay"); + for (DynamicObject object : purbillentry_pay) { + boolean isprepay = object.getBoolean("isprepay");//是否预付 + if (isprepay) { + String tqq9_paybillno = object.getString("tqq9_paybillno");//付款处理单 + if (kd.bos.util.StringUtils.isNotEmpty(tqq9_paybillno)) { + BigDecimal tqq9_settleamount = object.getBigDecimal("tqq9_settleamount") == null + ? BigDecimal.ZERO : object.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)); + } + } + } + } + } + } - model.setValue("tqq9_paybillno", dynamicObject.getString("billno"));//付款单 - model.setValue("joinpayamount", unsettleamount, rowIndex);//关联付款金额 - model.setValue("paidamount", unsettleamount, rowIndex);//已付金额 - model.setValue("tqq9_settleamount", unsettleamount, rowIndex);//本次结算金额 + BigDecimal actpayamt = dynamicObject.getBigDecimal("actpayamt") == null + ? BigDecimal.ZERO : dynamicObject.getBigDecimal("actpayamt");//付款金额 + String casPayBillNo = dynamicObject.getString("billno"); + BigDecimal settleamount = settleMap.get(casPayBillNo) == null ? BigDecimal.ZERO : settleMap.get(casPayBillNo);//历史已结算金额 + BigDecimal leftAmount = actpayamt.subtract(settleamount);//剩余结算金额 + + model.setValue("tqq9_paybillno", dynamicObject.getString("billno"));//付款单 + model.setValue("joinpayamount", leftAmount, rowIndex);//关联付款金额 + model.setValue("paidamount", leftAmount, rowIndex);//已付金额 + model.setValue("tqq9_settleamount", leftAmount, rowIndex);//本次结算金额 + } } }