支出合同结算 金额校验

This commit is contained in:
程小伟 2025-05-14 17:19:00 +08:00
parent 781c1591ba
commit ef76a2b705
1 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,77 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import java.math.BigDecimal;
/**
* 工序分摊金额校验
*/
public class OutContractSettleProcessCheckExtOp extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("itementry");
e.getFieldKeys().add("itementry.oftaxamount");
e.getFieldKeys().add("itementry.amount");
e.getFieldKeys().add("zcgj_allprocessbytax");
e.getFieldKeys().add("zcgj_processallocatentity");
e.getFieldKeys().add("contract");
//e.getFieldKeys().add("contract.zcgj_pricetype");
}
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
//当前所在的组织是属于矿山下的
e.getValidators().add(new ValidatorExt());
}
class ValidatorExt extends AbstractValidator {
@Override
public void validate() {
ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
DynamicObject contract = dataEntity.getDynamicObject("contract");
boolean isByPrincetax = dataEntity.getBoolean("zcgj_allprocessbytax");//获取按价税合计分摊工序复合按钮
if (contract != null) {
DynamicObject contractObj = BusinessDataServiceHelper.loadSingle(contract.getLong("id"), "ec_out_contract", "zcgj_pricetype");
//不定量不定价合同和总价包干合同zjbgbdlbdj
if (contractObj.getString("zcgj_pricetype").equals("zjbg")
|| contractObj.getString("zcgj_pricetype").equals("bdlbdj")) {
DynamicObjectCollection itementryCollection = dataEntity.getDynamicObjectCollection("itementry");
int i = 1;
for (DynamicObject itementry : itementryCollection) {
BigDecimal oftaxamount = itementry.getBigDecimal("oftaxamount");
BigDecimal amount = itementry.getBigDecimal("amount");
DynamicObjectCollection processallocatentityCollection = itementry.getDynamicObjectCollection("zcgj_processallocatentity");
BigDecimal totalPaAmount = BigDecimal.ZERO;
for (DynamicObject dynamicObject : processallocatentityCollection) {
totalPaAmount = totalPaAmount.add(dynamicObject.getBigDecimal("zcgj_pa_amount"));
}
if (isByPrincetax) {
if (totalPaAmount.compareTo(oftaxamount) != 0) {
this.addFatalErrorMessage(extendedDataEntity, "合同支付项第" + i + "条的价税合计金额与工序分摊金额之和不等,请重新核对并调整分摊金额,以确保两者相等。");
}
} else {
if (totalPaAmount.compareTo(amount) != 0) {
this.addFatalErrorMessage(extendedDataEntity, "合同支付项第" + i + "条的价金额(不含税)与工序分摊金额之和不等,请重新核对并调整分摊金额,以确保两者相等。");
}
}
i++;
}
}
}
}
}
}
}