支出合同确认单累计冲销预付金额功能开发

This commit is contained in:
zhangzhiguo 2025-06-09 11:32:40 +08:00
parent 21cac3881c
commit 2874c03ad7
1 changed files with 96 additions and 2 deletions

View File

@ -1,5 +1,7 @@
package zcgj.zcdev.zcdev.pr.plugin.form;
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
@ -16,12 +18,15 @@ import kd.bos.form.events.HyperLinkClickListener;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.ec.contract.common.enums.DirectionEnum;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
/**
* 支出合同确认单插件
@ -45,7 +50,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
initData(contractSettleIdObj);
this.getView().invokeOperation("save");
}
//calBcCxAmt();
}
}
}
@ -56,7 +63,8 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
getModel().setValue("zcgj_ec_out_contract_name",ecoutcontractsettle.getString("billname"));
getModel().setValue("zcgj_ec_out_contractid", ecoutcontractsettle.getLong("id")); //id文本冗余
getModel().setValue("zcgj_billname",ecoutcontractsettle.getString("billname"));
getModel().setValue("zcgj_contract",ecoutcontractsettle.getDynamicObject("contract"));
DynamicObject contract = ecoutcontractsettle.getDynamicObject("contract");
getModel().setValue("zcgj_contract",contract);
getModel().setValue("zcgj_contattr",ecoutcontractsettle.getDynamicObject("contattr"));
getModel().setValue("zcgj_project",ecoutcontractsettle.getDynamicObject("project"));
getModel().setValue("zcgj_period",ecoutcontractsettle.getDynamicObject("period"));
@ -72,6 +80,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
//DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("zcgj_itementry");
DynamicObjectCollection entryEntity1 = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_itementry");
entryEntity1.clear();
BigDecimal contractPayAmt = getContractPayAmt(contract);
BigDecimal finaceConfirmeAmt = getFinaceConfirmeAmt(contract);
BigDecimal amt = contractPayAmt.subtract(finaceConfirmeAmt);
for (DynamicObject dynamicObject : itementry) {
DynamicObject item = entryEntity1.addNew();
item.set("zcgj_payitem",dynamicObject.getDynamicObject("payitem"));
@ -80,6 +91,7 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
item.set("zcgj_rate",dynamicObject.getBigDecimal("rate"));
item.set("zcgj_taxamt",dynamicObject.getBigDecimal("taxamt"));
item.set("zcgj_remark",dynamicObject.getString("remark"));
item.set("zcgj_ljwcxamt",amt);
}
this.getView().updateView("zcgj_itementry");
}
@ -91,9 +103,12 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
this.ofTaxAmountChanged(changeData); //计算税额和不含税金额
}else if(StringUtils.equals(name, "zcgj_ec_out_contract_sett")){
DynamicObject newValue = (DynamicObject)changeData.getNewValue();
initData(newValue.getLong("id"));
if(newValue!=null){
initData(newValue.getLong("id"));
}
}
}
protected void ofTaxAmountChanged(ChangeData changeData) {
@ -156,4 +171,83 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
}
}
/**
* 获取累计未冲销预付金额
* @return 累计未冲销预付金额
*/
/*private BigDecimal calBcCxAmt(){
BigDecimal contractPayAmt = getContractPayAmt();
BigDecimal finaceConfirmeAmt = getFinaceConfirmeAmt();
BigDecimal amt = contractPayAmt.subtract(finaceConfirmeAmt);
// this.getModel().setValue("zcgj_ljwcxamt", amt, rowIndex);
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_itementry");
DynamicObjectCollection dynamicObjectCollection1 = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_itementry");
DynamicObjectCollection zcgjItementry = this.getModel().getEntryEntity("zcgj_itementry");
for (int i = 0; i < dynamicObjectCollection.size(); i++) {
this.getModel().setValue("zcgj_ljwcxamt", amt, i);
}
this.getView().updateView("zcgj_itementry");
return amt;
}*/
/**
* 获取合同下所有付款申请的预付金额和
* 累计实付金额
*/
private BigDecimal getContractPayAmt(DynamicObject contract){
List<QFilter> searchFilterList = new ArrayList<>();
searchFilterList.add(new QFilter("entryentity.contract", QCP.equals,contract.getLong("id") ));
searchFilterList.add(new QFilter("entryentity.paymenttype", QCP.equals,"PREPAYMENT" ));
searchFilterList.add( new QFilter("billstatus", QCP.equals,"C" ));
DynamicObject[] outcontractmeasures = BusinessDataServiceHelper.load("ec_paymentapply", "entryentity.totalrealoftaxamount",searchFilterList.toArray(new QFilter [] {}));
if(outcontractmeasures!=null && outcontractmeasures.length>0){
BigDecimal totalrealoftaxamountAll = BigDecimal.ZERO;
for (DynamicObject outcontractmeasure : outcontractmeasures) {
for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("entryentity")) {
totalrealoftaxamountAll =totalrealoftaxamountAll.add(dynamicObject.getBigDecimal("totalrealoftaxamount"));
}
}
return totalrealoftaxamountAll;
}
return BigDecimal.ZERO;
}
/**
* 获取合同下所有财务确认单的本次冲销预付金额
*/
private BigDecimal getFinaceConfirmeAmt(DynamicObject contract){
List<QFilter> searchFilterList = new ArrayList<>();
searchFilterList.add(new QFilter("zcgj_contract", QCP.equals,contract.getLong("id") ));
searchFilterList.add(new QFilter("billstatus", QCP.equals,"C" ));
DynamicObject[] outcontractmeasures = BusinessDataServiceHelper.load("zcgj_ec_out_finaceconfirm", "zcgj_contract,zcgj_itementry.zcgj_bccxamt", searchFilterList.toArray(new QFilter [] {}));
if(outcontractmeasures!=null && outcontractmeasures.length>0){
BigDecimal bccxamtAll = BigDecimal.ZERO;
for (DynamicObject outcontractmeasure : outcontractmeasures) {
for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("zcgj_itementry")) {
bccxamtAll =bccxamtAll.add(dynamicObject.getBigDecimal("zcgj_bccxamt"));
}
}
return bccxamtAll;
}
return BigDecimal.ZERO;
/*BigDecimal bccxamtAll = BigDecimal.ZERO;
List<QFilter> searchFilterList = new ArrayList<>();
searchFilterList.add(new QFilter("zcgj_contract", QCP.equals,contract.getLong("id") ));
searchFilterList.add(new QFilter("billstatus", QCP.equals,"C" ));
DataSet finaceconfirmDataSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(),
"zcgj_ec_out_finaceconfirm",
"zcgj_contract,zcgj_itementry.zcgj_bccxamt as zcgj_bccxamt" ,
searchFilterList.toArray(new QFilter [] {}), null
);
if(finaceconfirmDataSet == null || finaceconfirmDataSet.isEmpty()){
return bccxamtAll;
}
for (Row itemRow : finaceconfirmDataSet) {
BigDecimal bccxamt = itemRow.getBigDecimal("zcgj_bccxamt");
bccxamtAll =bccxamtAll.add(bccxamt);
}
return bccxamtAll;*/
}
}