diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DynamicContractViewUIExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DynamicContractViewUIExt.java new file mode 100644 index 0000000..4e415bd --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DynamicContractViewUIExt.java @@ -0,0 +1,101 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.ec.basedata.common.enums.DirectionEnum; +import kd.ec.contract.common.enums.BillStatusEnum; +import kd.ec.contract.common.enums.PayDirectionEnum; +import kd.ec.contract.formplugin.DynamicContractViewUI; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class DynamicContractViewUIExt extends DynamicContractViewUI { + + /** + * 重写合同看板拉去合同结算数据逻辑 + * @param contractId + * @param payDirection + */ + @Override + protected void updateSettle(Long contractId, String payDirection) { + this.getModel().deleteEntryData("settleEntry"); + String settleBillId; + String finalSettleBillId; + if (PayDirectionEnum.IN.getValue().equals(payDirection)) { + settleBillId = "ec_in_contract_settle"; + finalSettleBillId = "ec_in_finalsettle"; + } else { + settleBillId = "ec_out_contract_settle"; + finalSettleBillId = "ec_out_finalsettle"; + } + + QFilter finalSettleFilter = new QFilter("billstatus", "=", BillStatusEnum.AUDIT.getValue()); + finalSettleFilter.and("contract", "=", contractId); + DynamicObject[] finalSettles = BusinessDataServiceHelper.load(finalSettleBillId, "id", new QFilter[]{finalSettleFilter}); + if (finalSettles != null && finalSettles.length > 0) { + int index = this.getModel().createNewEntryRow("settleEntry"); + DynamicObject finalSettleBill = BusinessDataServiceHelper.loadSingle(finalSettles[0].getPkValue(), finalSettleBillId); + DynamicObjectCollection settleDetailEntries = finalSettleBill.getDynamicObjectCollection("settledetailentry"); + BigDecimal thisSettleAmount = BigDecimal.ZERO; + BigDecimal thisSettleOfTax = BigDecimal.ZERO; + + for(DynamicObject settleDetailEntry : settleDetailEntries) { + DynamicObject payItem = settleDetailEntry.getDynamicObject("payitem"); + BigDecimal coe = BigDecimal.ONE; + if (payItem != null) { + String direction = payItem.getString("direction"); + if (StringUtils.equals(direction, DirectionEnum.NON.getValue())) { + coe = BigDecimal.ZERO; + } else if (StringUtils.equals(direction, DirectionEnum.SUB.getValue())) { + coe = coe.negate(); + } + } + + BigDecimal finalSettleAmount = settleDetailEntry.getBigDecimal("payitemfinalsettleamt"); + BigDecimal finalSettleOfTax = settleDetailEntry.getBigDecimal("payitemsettleoftax"); + BigDecimal settleAmount = settleDetailEntry.getBigDecimal("payitemsettleamt"); + BigDecimal settleOfTax = settleDetailEntry.getBigDecimal("itemsettleoftax"); + thisSettleAmount = thisSettleAmount.add(finalSettleAmount.subtract(settleAmount).multiply(coe)); + thisSettleOfTax = thisSettleOfTax.add(finalSettleOfTax.subtract(settleOfTax).multiply(coe)); + } + + this.getModel().setValue("settleperiod", ResManager.loadKDString("合同决算", "DynamicContractViewUI_21", "ec-contract-formplugin", new Object[0]), index); + this.getModel().setValue("settlenum", finalSettleBill.get("billno"), index); + this.getModel().setValue("settlename", finalSettleBill.get("name"), index); + this.getModel().setValue("settleamount", thisSettleAmount, index); + this.getModel().setValue("settletax", thisSettleOfTax.subtract(thisSettleAmount), index); + this.getModel().setValue("oftaxsettleamount", thisSettleOfTax, index); + this.getModel().setValue("settlecreator", finalSettleBill.get("creator"), index); + this.getModel().setValue("settlecreatdate", finalSettleBill.get("createtime"), index); + this.getModel().setValue("isfinalsettle", true, index); + } + + QFilter filter = new QFilter("contract.id", "=", contractId); + List billstatusList = new ArrayList<>(); + billstatusList.add("C"); + billstatusList.add("D"); + filter.and(new QFilter("billstatus", QCP.in,billstatusList)); + DynamicObject[] settleContractCols = BusinessDataServiceHelper.load(settleBillId, "period.number,billno,billname,settleamount,taxamount,settleoftaxamount,creator,createtime", new QFilter[]{filter}); + + for(int i = 0; i < settleContractCols.length; ++i) { + int index = this.getModel().createNewEntryRow("settleEntry"); + DynamicObject settleInfo = settleContractCols[i]; + this.getModel().setValue("settleperiod", settleInfo.get("period.number"), index); + this.getModel().setValue("settlenum", settleInfo.get("billno"), index); + this.getModel().setValue("settlename", settleInfo.get("billname"), index); + this.getModel().setValue("settleamount", settleInfo.get("settleamount"), index); + this.getModel().setValue("settletax", settleInfo.get("taxamount"), index); + this.getModel().setValue("oftaxsettleamount", settleInfo.get("settleoftaxamount"), index); + this.getModel().setValue("settlecreator", settleInfo.get("creator"), index); + this.getModel().setValue("settlecreatdate", settleInfo.get("createtime"), index); + } + + } +}