98 lines
5.3 KiB
Java
98 lines
5.3 KiB
Java
package tqq9.lc123.cloud.app.plugin.operate.cas;
|
||
|
||
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.args.AfterOperationArgs;
|
||
import kd.bos.entity.validate.AbstractValidator;
|
||
import kd.bos.newdevportal.domaindefine.sample.validator.MyValidator;
|
||
import kd.bos.orm.query.QCP;
|
||
import kd.bos.orm.query.QFilter;
|
||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||
import kd.sdk.plugin.Plugin;
|
||
|
||
import java.math.BigDecimal;
|
||
|
||
/**
|
||
* 采购订单操作插件
|
||
* 1.校验器:未结算金额大于0校验
|
||
* 2.审核插件:付款计划分录对应付款单的未结算金额转化为已结算金额
|
||
*/
|
||
public class PurOrderReversePayBillPlugin extends AbstractOperationServicePlugIn implements Plugin {
|
||
@Override
|
||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||
super.onAddValidators(e);
|
||
e.addValidator(new UnSettleAmountValidator());
|
||
}
|
||
|
||
|
||
class UnSettleAmountValidator extends AbstractValidator {
|
||
@Override
|
||
public void validate() {
|
||
for (ExtendedDataEntity dataEntity : this.getDataEntities()) {
|
||
String billno = dataEntity.getDataEntity().getString("billno");//采购订单单据号
|
||
//查询采购订单
|
||
DynamicObject purorderbill = BusinessDataServiceHelper.loadSingle("pm_purorderbill", new QFilter[]{new QFilter("billno", QCP.equals, billno)});
|
||
//获取付款计划分录
|
||
DynamicObjectCollection purbillentry_pay = purorderbill.getDynamicObjectCollection("purbillentry_pay");
|
||
for (DynamicObject dynamicObject : purbillentry_pay) {
|
||
//付款单单据编号
|
||
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");
|
||
//查询付款单
|
||
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_paybillno)});
|
||
BigDecimal unsettleamount = paybill.getBigDecimal("unsettleamount");//未结算金额
|
||
if (unsettleamount.compareTo(BigDecimal.ZERO) <= 0) {
|
||
this.addErrorMessage(dataEntity, "单据号:" + billno + "付款计划分录的付款单:" + tqq9_paybillno + "未结算金额为:" + unsettleamount+"无法审核");
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
@Override
|
||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||
super.afterExecuteOperationTransaction(e);
|
||
DynamicObject[] dataEntities = e.getDataEntities();
|
||
for (DynamicObject dataEntity : dataEntities) {
|
||
String billno = dataEntity.getString("billno");
|
||
//查询采购订单
|
||
DynamicObject purorderbill = BusinessDataServiceHelper.loadSingle("pm_purorderbill", new QFilter[]{new QFilter("billno", QCP.equals, billno)});
|
||
//获取付款计划分录
|
||
DynamicObjectCollection purbillentry_pay = purorderbill.getDynamicObjectCollection("purbillentry_pay");
|
||
for (DynamicObject dynamicObject : purbillentry_pay) {
|
||
//付款单单据编号
|
||
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");
|
||
//查询付款单
|
||
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_paybillno)});
|
||
if (paybill != null) {
|
||
//获取付款明细分录
|
||
DynamicObjectCollection entries = paybill.getDynamicObjectCollection("entry");
|
||
BigDecimal unsettleamount = paybill.getBigDecimal("unsettleamount");//未结算金额
|
||
BigDecimal unsettleamountbase = paybill.getBigDecimal("unsettleamountbase");//未结算金额(本位币)
|
||
//单头未结算金额转化为已结算金额
|
||
paybill.set("unsettleamount", BigDecimal.ZERO);
|
||
paybill.set("unsettleamountbase", BigDecimal.ZERO);
|
||
paybill.set("settleamount", unsettleamount);//已结算金额
|
||
paybill.set("settleamountbase", unsettleamountbase);//已结算金额(本位币)
|
||
for (DynamicObject entry : entries) {
|
||
BigDecimal e_unsettledamt = entry.getBigDecimal("e_unsettledamt");//未结算金额
|
||
BigDecimal e_unsettledlocalamt = entry.getBigDecimal("e_unsettledlocalamt");//未结算金额折本位币
|
||
//分录未结算金额转化为已结算金额
|
||
entry.set("e_unsettledamt", BigDecimal.ZERO);
|
||
entry.set("e_unsettledlocalamt", BigDecimal.ZERO);
|
||
entry.set("e_settledamt", e_unsettledamt);//已结算金额
|
||
entry.set("e_settledlocalamt", e_unsettledlocalamt);//已结算金额折本币
|
||
}
|
||
paybill.set("entry", entries);
|
||
//保存
|
||
SaveServiceHelper.save(new DynamicObject[]{paybill});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |