lc/lc123/cloud/app/plugin/operate/cas/PurOrderReversePayBillPlugi...

98 lines
5.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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});
}
}
}
}
}