1、计息单生成付款单变更状态默认:未变更

2、付款单删除上游展示的付款信息删除
This commit is contained in:
XiangLingFeng 2025-12-18 15:22:16 +08:00
parent 501fb59533
commit 9b88ffde84
2 changed files with 97 additions and 0 deletions

View File

@ -201,6 +201,7 @@ public class InterestAccrualGenPaymentOperationPlugin extends AbstractOperationS
payBill.set("exchangerate",BigDecimal.ONE);//付款汇率 payBill.set("exchangerate",BigDecimal.ONE);//付款汇率
payBill.set("priority","public");//紧急程度 默认普通 payBill.set("priority","public");//紧急程度 默认普通
payBill.set("paymentchannel","counter");//支付渠道柜台默认 payBill.set("paymentchannel","counter");//支付渠道柜台默认
payBill.set("changestatus","unchange");//变更状态未变更
payBill.set("bizdate", currentDate);//业务日期 payBill.set("bizdate", currentDate);//业务日期
payBill.set("settletype",settleType);//结算方式 payBill.set("settletype",settleType);//结算方式
payBill.set("kdsz_czpaystatue","1");//财资付款状态 默认无需推送 payBill.set("kdsz_czpaystatue","1");//财资付款状态 默认无需推送

View File

@ -0,0 +1,96 @@
package kdsz.zyf25.tmc.cfm.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.PreparePropertysEventArgs;
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 kd.sdk.plugin.Plugin;
import java.util.HashSet;
import java.util.Iterator;
/**
* 源单类型为计息单的付款单删除时同步删除计息单及计息单上游的原始单据中付款单关联信息
*/
public class PaymentBillDeleteLkOperationPlugin extends AbstractOperationServicePlugIn implements Plugin {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("sourcebilltype");
e.getFieldKeys().add("sourcebillid");
}
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] bills = e.getDataEntities();
for (DynamicObject bill : bills) {
String srcBillType = bill.getString("sourcebilltype");
Long payBillId = bill.getLong("id");
if ("kdsz_interestaccrual".equals(srcBillType)){
Long srcBillId = bill.getLong("sourcebillid");
//查询计息单
DynamicObject srcBill = BusinessDataServiceHelper.loadSingle(srcBillId, "kdsz_interestaccrual");
if (srcBill != null){
DynamicObjectCollection srcEntries = srcBill.getDynamicObjectCollection("entryentity");
for (DynamicObject srcEntry : srcEntries) {
Long srcPayBillId = srcEntry.getLong("kdsz_e_paybillid");
if (srcPayBillId == 0){
continue;
}
if (srcPayBillId.compareTo(payBillId) == 0){
srcEntry.set("kdsz_e_paybillid",0L);
srcEntry.set("kdsz_e_paybill",null);
}
}
SaveServiceHelper.update(srcBill);
deletePaymentLk(srcBill,payBillId);
}
}
}
}
private void deletePaymentLk(DynamicObject srcBill,Long payBillId){
String feeEntity = srcBill.getString("kdsz_srcentity");
Object feeBillId = srcBill.get("kdsz_srcbillid");
//根据源单id源单类型找到费用明细
DynamicObject feeBill = BusinessDataServiceHelper.loadSingle(feeBillId, feeEntity);
if (feeBill != null) {
DynamicObjectCollection feeEntries = feeBill.getDynamicObjectCollection("entry");
HashSet<Long> oriBillIds = new HashSet<>();
for (DynamicObject feeEntry : feeEntries) {
long pjId = feeEntry.getLong("srcbillid");
oriBillIds.add(pjId);
}
//根据费用明细分录的上游id查询上游单据的付息记录并将本条计息单的记录删除
QFilter filter = new QFilter("id", "in", oriBillIds);
//TODO: 2025/12/10 暂时定为开票登记
Long jxId = srcBill.getLong("id");//计息单id
DynamicObject[] oriBills = BusinessDataServiceHelper.load("cdm_payablebill", "id",
new QFilter[]{filter});
for (int i = 0; i < oriBills.length; i++) {
oriBills[i] = BusinessDataServiceHelper.loadSingle(oriBills[i].getPkValue(),"cdm_payablebill");
DynamicObjectCollection srcPayEntries = oriBills[i].getDynamicObjectCollection("kdsz_payentry");
for (DynamicObject srcPayEntry : srcPayEntries) {
Long srcJXBillId = srcPayEntry.getLong("kdsz_interestbillid");
if (srcJXBillId.compareTo( jxId) == 0){
//获取计息关联付款分录
DynamicObjectCollection jxLkPayEntries = srcPayEntry.getDynamicObjectCollection("kdsz_paylinkentry");
Iterator<DynamicObject> iterator = jxLkPayEntries.iterator();
while (iterator.hasNext()){
DynamicObject next = iterator.next();
long lkPayBillId = next.getLong("kdsz_paybillid");
if (lkPayBillId == payBillId){
iterator.remove();
}
}
}
}
}
SaveServiceHelper.save(oriBills);
}
}
}