对公报销单提交校验插件:校验往来单位与开票公司是否一致,不一致需填写特殊说明

This commit is contained in:
xuhaihui 2025-07-15 17:30:38 +08:00
parent 327e0259ff
commit 89f4fd31a5
1 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,57 @@
package zcgj.zcdev.zcdev.fs.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;
/*
对公报销单提交校验插件校验往来单位与开票公司是否一致不一致需填写特殊说明
*/
public class PublicReimburPayeriOp extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("invoiceentry");
e.getFieldKeys().add("billpayerid");
e.getFieldKeys().add("zcgj_invoiceremark");
e.getFieldKeys().add("makeoutcompname");
}
@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();
DynamicObjectCollection invoiceEntryCollection = dataEntity.getDynamicObjectCollection("invoiceentry");//发票信息
if (invoiceEntryCollection.size() > 0) {
DynamicObject billPayerId = dataEntity.getDynamicObject("billpayerid");//往来单位
String zcgj_invoiceremark = dataEntity.getString("zcgj_invoiceremark");//特殊说明
if (billPayerId != null) {
String billPayerIdName = billPayerId.getString("name");
for (DynamicObject invoiceEntry : invoiceEntryCollection) {
String makeOutCompName = invoiceEntry.getString("makeoutcompname");//开票公司
if (!makeOutCompName.equals(billPayerIdName) && "".equals(zcgj_invoiceremark)) {
//开票公司与往来单位名称不一致且特殊说明为空
this.addFatalErrorMessage(extendedDataEntity, "开票公司与往来单位存在不一致!请填写特殊说明!");
}
}
} else {
this.addFatalErrorMessage(extendedDataEntity, "往来单位为空");
}
}
}
}
}
}