付款登记单审核与反审核操作添加无合同付款申请类型

This commit is contained in:
xuhaihui 2025-06-17 14:37:54 +08:00
parent 4824ca3b57
commit 4acfc8616c
1 changed files with 259 additions and 144 deletions

View File

@ -19,6 +19,7 @@ import java.math.BigDecimal;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
//付款登记单审核与反审核操作插件
public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp { public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
private static final Log log = LogFactory.getLog(PaymentRegisterFundOpExt.class); private static final Log log = LogFactory.getLog(PaymentRegisterFundOpExt.class);
@ -34,185 +35,299 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
DynamicObject[] dataEntities = e.getDataEntities(); DynamicObject[] dataEntities = e.getDataEntities();
switch (operationKey) { switch (operationKey) {
case "audit": case "audit":
log.info("执行PaymentRegisterFundOpExt的审核操作开始更新合同付款类型实付金额"); int a = 0;
this.updateContTypeAmtTotalRealAmt(dataEntities); for (DynamicObject data : dataEntities) {
log.info("执行PaymentRegisterFundOpExt的审核操作完成更新合同付款类型实付金额"); for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息分录
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
if (contract != null) {
//合同付款申请
a++;
break;
}
}
if (a > 0) {
//合同付申请
log.info("执行PaymentRegisterFundOpExt的审核操作开始更新合同付款类型实付金额");
this.updateContTypeAmtTotalRealAmt(data);
log.info("执行PaymentRegisterFundOpExt的审核操作完成更新合同付款类型实付金额");
log.info("执行PaymentRegisterFundOpExt的审核操作开始更新请款单实付金额"); log.info("执行PaymentRegisterFundOpExt的审核操作开始更新请款单实付金额");
this.updateInApplyRealPayAmt(dataEntities, true); this.updateInApplyRealPayAmt(data, true);
log.info("执行PaymentRegisterFundOpExt的审核操作完成更新请款单实付金额"); log.info("执行PaymentRegisterFundOpExt的审核操作完成更新请款单实付金额");
break; break;
} else {
//非合同付款申请
log.info("执行PaymentRegisterFundOpExt的审核操作开始更新无合同请款单实付金额");
this.updateInApplyRealPayAmtExt(data, true);
log.info("执行PaymentRegisterFundOpExt的审核操作完成更新无合同请款单实付金额");
}
}
case "unaudit": case "unaudit":
log.info("执行PaymentRegisterFundOpExt的反审核操作开始更新合同付款类型实付金额"); int b = 0;
this.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities); for (DynamicObject data : dataEntities) {
log.info("执行PaymentRegisterFundOpExt的反审核操作完成更新合同付款类型实付金额"); for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息分录
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
if (contract != null) {
//合同付款申请
b++;
break;
}
}
if (b > 0) {
//合同付款申请
log.info("执行PaymentRegisterFundOpExt的反审核操作开始更新合同付款类型实付金额");
this.updateContTypeAmtTotalRealAmtWhenUnAudit(data);
log.info("执行PaymentRegisterFundOpExt的反审核操作完成更新合同付款类型实付金额");
log.info("执行PaymentRegisterFundOpExt的反审核操作开始更新请款单实付金额"); log.info("执行PaymentRegisterFundOpExt的反审核操作开始更新请款单实付金额");
this.updateInApplyRealPayAmt(dataEntities, false); this.updateInApplyRealPayAmt(data, false);
log.info("执行PaymentRegisterFundOpExt的反审核操作完成更新请款单实付金额"); log.info("执行PaymentRegisterFundOpExt的反审核操作完成更新请款单实付金额");
break;
} else {
//非合同付款申请
log.info("执行PaymentRegisterFundOpExt的反审核操作开始更新无合同请款单实付金额");
this.updateInApplyRealPayAmtExt(data, false);
log.info("执行PaymentRegisterFundOpExt的反审核操作完成更新无合同请款单实付金额");
}
}
} }
} }
@Override protected void updateInApplyRealPayAmt(DynamicObject data, boolean isAudit) {
protected void updateInApplyRealPayAmt(DynamicObject[] dataEntities, boolean isAudit) { // super.updateInApplyRealPayAmt(dataEntities, isAudit);
// super.updateInApplyRealPayAmt(dataEntities, isAudit);
BigDecimal ratio = BigDecimal.ONE; BigDecimal ratio = BigDecimal.ONE;
if (!isAudit) { if (!isAudit) {
ratio = BigDecimal.ZERO.subtract(ratio); ratio = BigDecimal.ZERO.subtract(ratio);
} }
for(DynamicObject object : dataEntities) { // for (DynamicObject object : dataEntities) {
Long referregisterid = object.getLong("referregisterid");//关联登记单id(付款处理单Id) Long referregisterid = data.getLong("referregisterid");//关联登记单id(付款处理单Id)
QFilter paybillFilter = new QFilter("id", "=", referregisterid); QFilter paybillFilter = new QFilter("id", "=", referregisterid);
//付款处理单 //付款处理单
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", "entry,entry.e_corebillentryseq", new QFilter[]{paybillFilter}); DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", "entry,entry.e_corebillentryseq", new QFilter[]{paybillFilter});
Set<Integer> payBillSer = new HashSet<>(); Set<Integer> payBillSer = new HashSet<>();
if(paybill!=null){ if (paybill != null) {
for (DynamicObject dynamicObject : paybill.getDynamicObjectCollection("entry")) { for (DynamicObject dynamicObject : paybill.getDynamicObjectCollection("entry")) {
int corebillentryseq = dynamicObject.getInt("e_corebillentryseq");//核心单据行号 int corebillentryseq = dynamicObject.getInt("e_corebillentryseq");//核心单据行号
payBillSer.add(corebillentryseq); payBillSer.add(corebillentryseq);
log.info("执行PaymentRegisterFundOpExt付款处理单涉及核心单据行号"+corebillentryseq); log.info("执行PaymentRegisterFundOpExt付款处理单涉及核心单据行号" + corebillentryseq);
}
} }
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息 }
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单 for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同 DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额 DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额
thisOfTaxAmt = thisOfTaxAmt.multiply(ratio); thisOfTaxAmt = thisOfTaxAmt.multiply(ratio);
String payType = entry.getString("paytype"); //支付类型 String payType = entry.getString("paytype"); //支付类型
if (paymentApplyF7 != null) { if (paymentApplyF7 != null) {
QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id")); QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id"));
DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", "realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt,entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay", new QFilter[]{paymentApplyFilter}); DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", "realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt,entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay", new QFilter[]{paymentApplyFilter});
DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单分录 DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单分录
boolean billcompletepay = true; boolean billcompletepay = true;
for(DynamicObject paymentEntry : paymentEntryCol) { for (DynamicObject paymentEntry : paymentEntryCol) {
String applyPayType = paymentEntry.getString("paymenttype"); String applyPayType = paymentEntry.getString("paymenttype");
DynamicObject applyContract = paymentEntry.getDynamicObject("contract"); DynamicObject applyContract = paymentEntry.getDynamicObject("contract");
int seq = paymentEntry.getInt("seq"); //付款申请单分录行号 int seq = paymentEntry.getInt("seq"); //付款申请单分录行号
if (contract != null && applyContract != null if (contract != null && applyContract != null
&& StringUtils.equals(contract.getString("id"), applyContract.getString("id")) && StringUtils.equals(contract.getString("id"), applyContract.getString("id"))
&& StringUtils.equals(payType, applyPayType) && StringUtils.equals(payType, applyPayType)
&& payBillSer.contains(seq) && payBillSer.contains(seq)
) { ) {
log.info("执行PaymentRegisterFundOpExt付款申请单分录行号和付款处理单核心单据分录行号匹配成功"); log.info("执行PaymentRegisterFundOpExt付款申请单分录行号和付款处理单核心单据分录行号匹配成功");
BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt"); BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt");
BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount"); BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount");
BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt); BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt);
BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt); BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt);
paymentEntry.set("thisrealpayamt", thisRealPayAmt); paymentEntry.set("thisrealpayamt", thisRealPayAmt);
paymentEntry.set("thiswaitpayamt", thisWaitPayAmt); paymentEntry.set("thiswaitpayamt", thisWaitPayAmt);
if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) { if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) {
paymentEntry.set("completepay", true); paymentEntry.set("completepay", true);
} else { } else {
paymentEntry.set("completepay", false); paymentEntry.set("completepay", false);
}
} }
} }
BigDecimal totalRealpayAmt = BigDecimal.ZERO;
for(DynamicObject inComeEntry : paymentEntryCol) {
if (!inComeEntry.getBoolean("completepay")) {
billcompletepay = false;
}
totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt"));
}
if (paymentApply.getBoolean("ismulticurrency")) {
BigDecimal exchangerate = paymentApply.getBigDecimal("exchangerate");
BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangerate);
paymentApply.set("stdrealpayamt", stdRealPayAmt);
}
paymentApply.set("realpayamt", totalRealpayAmt);
paymentApply.set("billcompletepay", billcompletepay);
SaveServiceHelper.save(new DynamicObject[]{paymentApply});
} }
BigDecimal totalRealpayAmt = BigDecimal.ZERO;
for (DynamicObject inComeEntry : paymentEntryCol) {
if (!inComeEntry.getBoolean("completepay")) {
billcompletepay = false;
}
totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt"));
}
if (paymentApply.getBoolean("ismulticurrency")) {
BigDecimal exchangerate = paymentApply.getBigDecimal("exchangerate");
BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangerate);
paymentApply.set("stdrealpayamt", stdRealPayAmt);
}
paymentApply.set("realpayamt", totalRealpayAmt);
paymentApply.set("billcompletepay", billcompletepay);
SaveServiceHelper.save(new DynamicObject[]{paymentApply});
}
}
// }
}
protected void updateInApplyRealPayAmtExt(DynamicObject data, boolean isAudit) {
BigDecimal ratio = BigDecimal.ONE;
if (!isAudit) {
//反审核操作时减去付款金额
ratio = BigDecimal.ZERO.subtract(ratio);
}
Long referRegisterId = data.getLong("referregisterid");//关联登记单id(付款处理单Id)
QFilter payBillFilter = new QFilter("id", "=", referRegisterId);
DynamicObject payBill = BusinessDataServiceHelper.loadSingle("cas_paybill",
"entry,entry.e_corebillentryseq", new QFilter[]{payBillFilter});//付款处理单
Set<Integer> payBillSer = new HashSet<>();
if (payBill != null) {
DynamicObjectCollection entryCollection = payBill.getDynamicObjectCollection("entry");//付款处理单 付款明细分录
for (DynamicObject entry : entryCollection) {
int coreBillEntrySeq = entry.getInt("e_corebillentryseq");//付款处理单 核心单据行号
payBillSer.add(coreBillEntrySeq);
log.info("执行PaymentRegisterFundOpExt付款处理单涉及核心单据行号" + coreBillEntrySeq);
}
}
DynamicObjectCollection entryEntityCollection = data.getDynamicObjectCollection("entryentity");//付款登记单 付款信息分录
for (DynamicObject entry : entryEntityCollection) {
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单 付款申请单号
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额
thisOfTaxAmt = thisOfTaxAmt.multiply(ratio);
String payType = entry.getString("paytype"); //付款登记单 支付类型
if (paymentApplyF7 != null) {
QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id"));
DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply",
"realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt," +
"entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay",
new QFilter[]{paymentApplyFilter});//付款申请单
DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单 付款信息分录
boolean billCompletePay = true;//付款申请单 表头付款完成
for (DynamicObject paymentEntry : paymentEntryCol) {
String applyPayType = paymentEntry.getString("paymenttype");//付款申请单 支付类型
int seq = paymentEntry.getInt("seq"); //付款申请单分录行号
if (StringUtils.equals(payType, applyPayType) && payBillSer.contains(seq)) {
log.info("执行PaymentRegisterFundOpExt付款申请单分录行号和付款处理单核心单据分录行号匹配成功");
BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt");//付款申请单 本次实付金额
BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount");//付款申请单 本次应付金额
BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt);
BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt);
paymentEntry.set("thisrealpayamt", thisRealPayAmt);//付款申请单 本次实付金额
paymentEntry.set("thiswaitpayamt", thisWaitPayAmt);//付款申请单 本次应付金额
if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) {
paymentEntry.set("completepay", true);//付款申请单 分录付款完成
} else {
paymentEntry.set("completepay", false);//付款申请单 分录付款完成
}
}
}
BigDecimal totalRealpayAmt = BigDecimal.ZERO;
for (DynamicObject inComeEntry : paymentEntryCol) {
if (!inComeEntry.getBoolean("completepay")) {//付款申请单 分录付款完成
billCompletePay = false;//付款申请单 表头付款完成
}
totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt"));//付款申请单 本次实付金额
}
if (paymentApply.getBoolean("ismulticurrency")) {//付款申请单 是否多币种
BigDecimal exchangeRate = paymentApply.getBigDecimal("exchangerate");//付款申请单 汇率
BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangeRate);
paymentApply.set("stdrealpayamt", stdRealPayAmt);//付款申请单 实际付款金额本位币
}
paymentApply.set("realpayamt", totalRealpayAmt);//付款申请单 本次实付金额
paymentApply.set("billcompletepay", billCompletePay);//付款申请单 表头付款完成
SaveServiceHelper.save(new DynamicObject[]{paymentApply});//保存付款申请单反写数据
} }
} }
} }
@Override protected void updateContTypeAmtTotalRealAmt(DynamicObject data) {
protected void updateContTypeAmtTotalRealAmt(DynamicObject[] dataEntities) {
//super.updateContTypeAmtTotalRealAmt(dataEntities); //super.updateContTypeAmtTotalRealAmt(dataEntities);
for(DynamicObject object : dataEntities) { // for (DynamicObject object : dataEntities) {
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) {
DynamicObject contract = entry.getDynamicObject("contract"); DynamicObject contract = entry.getDynamicObject("contract");
if(contract!=null){ if (contract != null) {
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
String type = entry.getString("paytype"); String type = entry.getString("paytype");
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
QFilter typeFilter = new QFilter("type", "=", type); QFilter typeFilter = new QFilter("type", "=", type);
DynamicObject node = entry.getDynamicObject("paynode"); DynamicObject node = entry.getDynamicObject("paynode");
String nodeText = entry.getString("paynodetext"); String nodeText = entry.getString("paynodetext");
if (node != null) { if (node != null) {
typeFilter.and("paynode", "=", node.getPkValue()); typeFilter.and("paynode", "=", node.getPkValue());
} else if (StringUtils.isNotEmpty(nodeText)) { } else if (StringUtils.isNotEmpty(nodeText)) {
typeFilter.and("node", "=", nodeText); typeFilter.and("node", "=", nodeText);
}
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt", new QFilter[]{contractFilter, typeFilter});
if (contTypeAmts != null && contTypeAmts.length != 0) {
for (DynamicObject contTypeAmt : contTypeAmts) {
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt");
contTypeAmt.set("totalrealamt", totalRealAmt.add(thisOfTaxAmt));
} }
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt", new QFilter[]{contractFilter, typeFilter}); SaveServiceHelper.save(contTypeAmts);
if (contTypeAmts != null && contTypeAmts.length != 0) { } else {
for(DynamicObject contTypeAmt : contTypeAmts) { BigDecimal payRate = entry.getBigDecimal("controlrate");
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt"); MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt");
contTypeAmt.set("totalrealamt", totalRealAmt.add(thisOfTaxAmt)); DynamicObject newContTypeAmtObj = new DynamicObject(entityType);
} newContTypeAmtObj.set("contract", contract);
newContTypeAmtObj.set("type", type);
SaveServiceHelper.save(contTypeAmts); newContTypeAmtObj.set("ratio", payRate);
} else { newContTypeAmtObj.set("totalrealamt", thisOfTaxAmt);
BigDecimal payRate = entry.getBigDecimal("controlrate"); newContTypeAmtObj.set("paynode", entry.get("paynode"));
MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt"); newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");
DynamicObject newContTypeAmtObj = new DynamicObject(entityType); SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj});
newContTypeAmtObj.set("contract", contract);
newContTypeAmtObj.set("type", type);
newContTypeAmtObj.set("ratio", payRate);
newContTypeAmtObj.set("totalrealamt", thisOfTaxAmt);
newContTypeAmtObj.set("paynode", entry.get("paynode"));
newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");
SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj});
}
} }
} }
} }
// }
} }
@Override protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject data) {
protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject[] dataEntities) {
//super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities); //super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities);
for(DynamicObject object : dataEntities) { // for (DynamicObject object : dataEntities) {
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) {
DynamicObject contract = entry.getDynamicObject("contract"); DynamicObject contract = entry.getDynamicObject("contract");
if(contract!=null){ if (contract != null) {
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
String type = entry.getString("paytype"); String type = entry.getString("paytype");
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
QFilter typeFilter = new QFilter("type", "=", type); QFilter typeFilter = new QFilter("type", "=", type);
DynamicObject node = entry.getDynamicObject("paynode"); DynamicObject node = entry.getDynamicObject("paynode");
String nodeText = entry.getString("paynodetext"); String nodeText = entry.getString("paynodetext");
if (node != null) { if (node != null) {
typeFilter.and("paynode", "=", node.getPkValue()); typeFilter.and("paynode", "=", node.getPkValue());
} else if (StringUtils.isNotEmpty(nodeText)) { } else if (StringUtils.isNotEmpty(nodeText)) {
typeFilter.and("node", "=", nodeText); typeFilter.and("node", "=", nodeText);
} }
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt,totalshowamt,ratio,source", new QFilter[]{contractFilter, typeFilter}); DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt,totalshowamt,ratio,source", new QFilter[]{contractFilter, typeFilter});
if (contTypeAmts != null && contTypeAmts.length != 0) { if (contTypeAmts != null && contTypeAmts.length != 0) {
for(DynamicObject contTypeAmt : contTypeAmts) { for (DynamicObject contTypeAmt : contTypeAmts) {
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt"); BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt");
String source = contTypeAmt.getString("source"); String source = contTypeAmt.getString("source");
contTypeAmt.set("totalrealamt", totalRealAmt.subtract(thisOfTaxAmt)); contTypeAmt.set("totalrealamt", totalRealAmt.subtract(thisOfTaxAmt));
if (StringUtils.isBlank(source) && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalshowamt")) == 0 && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalrealamt")) == 0) { if (StringUtils.isBlank(source) && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalshowamt")) == 0 && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalrealamt")) == 0) {
DeleteServiceHelper.delete("ecpf_conttypeamt", new QFilter[]{new QFilter("id", "=", contTypeAmt.getLong("id"))}); DeleteServiceHelper.delete("ecpf_conttypeamt", new QFilter[]{new QFilter("id", "=", contTypeAmt.getLong("id"))});
}
} }
SaveServiceHelper.save(contTypeAmts);
} }
SaveServiceHelper.save(contTypeAmts);
} }
} }
// }
} }
} }
} }