优化支出合同结算按入库运费结算逻辑,提交删除合同支付项中的当期合同计量金额行,撤销反审核新增合同支付项中的当期合同计量金额行逻辑和刷新页面逻辑

This commit is contained in:
xuhaihui 2025-11-07 13:50:44 +08:00
parent b18123694a
commit 4e39c9b866
4 changed files with 119 additions and 2 deletions

View File

@ -6,7 +6,9 @@ import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.list.BillList;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
@ -28,7 +30,15 @@ public class CostAllocatorBillPlugin extends AbstractFormPlugin {
this.addItemClickListeners("payitemdetaitoolap");//合同支付项明细工具栏
this.addItemClickListeners("entrytoolbar1");//入库单明细工具栏
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
super.afterDoOperation(afterDoOperationEventArgs);
String operateKey = afterDoOperationEventArgs.getOperateKey();
if (operateKey.equals("submit") || operateKey.equals("unsubmit") || operateKey.equals("unaudit")) {
// 刷新列表
this.getView().invokeOperation("refresh");
}
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);

View File

@ -347,6 +347,10 @@ public class OutContractSettleEditPluginExt extends AbstractBillPlugIn implement
protected void sumMaterialInAmountToItemEntry() {
this.getModel().updateCache();
Object contract = this.getModel().getValue("contract");//合同名称
if (contract == null) {
return;
}
DynamicObjectCollection materialInEntry = this.getModel().getEntryEntity("materialinentry");//入库单分录
if (materialInEntry != null && materialInEntry.size() != 0) {
BigDecimal amount = BigDecimal.ZERO;//入库单明细-材料不含税金额汇总
@ -574,10 +578,24 @@ public class OutContractSettleEditPluginExt extends AbstractBillPlugIn implement
//二开添加逻辑
} else if (StringUtils.equals(name, "zcgj_transset")) {
//按入库运费结算
Object contract = this.getModel().getValue("contract");//合同名称
if (contract == null) {
return;
}
boolean issettlebymatin = (boolean) this.getModel().getValue("issettlebymatin");//按入库单结算
boolean zcgj_transset = (boolean) changeData.getNewValue();//按入库运费结算新值
DynamicObject transSettleItem1 = this.getModel().getEntryRowEntity("itementry", 1);
DynamicObject payItem1 = transSettleItem1.getDynamicObject("payitem");//合同支付项-名称
boolean hasSettleTrans1 = "YFJS".equals(payItem1.getString("number"));
if (!issettlebymatin && !zcgj_transset && hasSettleTrans1) {
this.getModel().setValue("oftaxamount", BigDecimal.ZERO, 1);//合同支付项-价税合计
this.getModel().setValue("amount", BigDecimal.ZERO, 1);//合同支付项-金额
this.getModel().deleteEntryRow("itementry", 1);
return;
}
this.autoFetch();
this.sumMaterialInAmountToItemEntry();
SettleUpdateAmtUtils.calAllTypeAmount(this.getModel());
Boolean zcgj_transset = (Boolean) changeData.getNewValue();//按入库运费结算新值
DynamicObjectCollection materialInEntry = this.getModel().getEntryEntity("materialinentry");//入库单分录
if (materialInEntry != null && materialInEntry.size() != 0) {
BigDecimal amount = BigDecimal.ZERO;//入库单明细-材料不含税金额汇总

View File

@ -0,0 +1,47 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 支出合同结算提交操作插件
*/
public class OutContractSubmitOp extends AbstractOperationServicePlugIn {
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] dataEntities = e.getDataEntities();
List<DynamicObject> modifiedEntities = new ArrayList<>();
for (DynamicObject model : dataEntities) {
long id = model.getLong("id");
QFilter f1 = new QFilter("id", "=", id);
DynamicObject ec_out_contract_settle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", new QFilter[]{f1});//支出合同结算
boolean zcgj_transset = ec_out_contract_settle.getBoolean("zcgj_transset");//按入库运费结算
if (zcgj_transset) {
DynamicObjectCollection itemEntryCollection = ec_out_contract_settle.getDynamicObjectCollection("itementry");//支付项分录
if (itemEntryCollection != null && itemEntryCollection.size() > 0) {
Iterator<DynamicObject> iterator = itemEntryCollection.iterator();//迭代器
while (iterator.hasNext()) {
DynamicObject itemEntry = iterator.next();
DynamicObject payItem1 = itemEntry.getDynamicObject("payitem");//合同支付项-名称
boolean hasSettleTrans1 = "HTJL".equals(payItem1.getString("number"));
if (hasSettleTrans1) {
iterator.remove();//注意一定要用迭代器remove
}
}
}
}
SaveServiceHelper.save(new DynamicObject[]{ec_out_contract_settle});//保存
}
}
}

View File

@ -0,0 +1,42 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
/**
* 支出合同结算撤销反审核操作插件
*/
public class OutContractUnSubmitUnAuditOp extends AbstractOperationServicePlugIn {
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] dataEntities = e.getDataEntities();
for (DynamicObject model : dataEntities) {
long id = model.getLong("id");
QFilter f1 = new QFilter("id", "=", id);
DynamicObject ec_out_contract_settle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", new QFilter[]{f1});//支出合同结算
boolean zcgj_transset = ec_out_contract_settle.getBoolean("zcgj_transset");//按入库运费结算
if (zcgj_transset) {
DynamicObjectCollection itemEntryCollection = ec_out_contract_settle.getDynamicObjectCollection("itementry");//支付项分录
if (itemEntryCollection != null && itemEntryCollection.size() > 0) {
DynamicObject itemEntry = itemEntryCollection.get(0);
DynamicObject payItem1 = itemEntry.getDynamicObject("payitem");//合同支付项-名称
boolean hasSettleTrans1 = "YFJS".equals(payItem1.getString("number"));
if (hasSettleTrans1) {
DynamicObjectType entrytype = ec_out_contract_settle.getDynamicObjectCollection("itementry").getDynamicObjectType();
DynamicObject newItemEntry = new DynamicObject(entrytype);
newItemEntry.set("payitem", "506427748873442304");
itemEntryCollection.add(0, newItemEntry);
}
}
}
SaveServiceHelper.save(new DynamicObject[]{ec_out_contract_settle});//保存
}
}
}