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

76 lines
4.8 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.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
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.反审核插件:付款计划分录对应付款单的已结算金额转化为未结算金额
*/
public class PurOrderUnReversePayBillPlugin extends AbstractOperationServicePlugIn implements Plugin {
private final static Log logger = LogFactory.getLog(PurOrderUnReversePayBillPlugin.class);
@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 tqq9_settleamount = dynamicObject.getBigDecimal("tqq9_settleamount");
BigDecimal settleamount = BigDecimal.ZERO;//已结算金额
BigDecimal settleamountbase = BigDecimal.ZERO;//已结算金额(本位币)
BigDecimal unsettleamount = BigDecimal.ZERO;//未结算金额
BigDecimal unsettleamountbase = BigDecimal.ZERO;//未结算金额(本位币)
for (DynamicObject entry : entries) {
//分录结算金额计算
BigDecimal e_unsettledamt = entry.getBigDecimal("e_unsettledamt");//未结算金额
BigDecimal e_unsettledlocalamt = entry.getBigDecimal("e_unsettledlocalamt");//未结算金额折本位币
BigDecimal e_settledamt = entry.getBigDecimal("e_settledamt");//已结算金额
BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");//已结算金额折本位币
//分录未结算金额转化为已结算金额
entry.set("e_unsettledamt", e_unsettledamt.add(tqq9_settleamount));//未结算金额
entry.set("e_unlockamt", e_unsettledamt.add(tqq9_settleamount));//未锁定金额
unsettleamount = unsettleamount.add(e_unsettledamt.add(tqq9_settleamount));
entry.set("e_unsettledlocalamt", e_unsettledlocalamt.add(tqq9_settleamount));//未结算金额(本位币)
unsettleamountbase = unsettleamountbase.add(e_unsettledlocalamt.add(tqq9_settleamount));
entry.set("e_settledamt", e_settledamt.subtract(tqq9_settleamount));//已结算金额
entry.set("e_lockamt", e_settledamt.subtract(tqq9_settleamount));//已锁定金额
settleamount = settleamount.add(e_settledamt.subtract(tqq9_settleamount));
entry.set("e_settledlocalamt", e_settledlocalamt.subtract(tqq9_settleamount));//已结算金额折本币
settleamountbase = settleamountbase.add(e_settledlocalamt.subtract(tqq9_settleamount));
}
//单头结算金额汇总
paybill.set("settleamount", settleamount);
paybill.set("settleamountbase", settleamountbase);
paybill.set("unsettleamount", unsettleamount);//未结算金额
paybill.set("unsettleamountbase", unsettleamountbase);//未结算金额(本位币)
paybill.set("entry", entries);
SaveServiceHelper.save(new DynamicObject[]{paybill});// }
}
}
}
}
}