94 lines
6.0 KiB
Java
94 lines
6.0 KiB
Java
|
package shkd.repc.rebm.opplugin;
|
|||
|
|
|||
|
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.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;
|
|||
|
|
|||
|
/**
|
|||
|
* 单据操作插件
|
|||
|
*/
|
|||
|
public class WriteBackAdjustAmountOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
|
|||
|
|
|||
|
/*
|
|||
|
* 目标成本调整-审核/反审核时触发,根据合约规划回‘传调整后金额’
|
|||
|
* */
|
|||
|
|
|||
|
@Override
|
|||
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
|||
|
super.afterExecuteOperationTransaction(e);
|
|||
|
String operationKey = e.getOperationKey();
|
|||
|
if ("audit".equals(operationKey) || "test".equals(operationKey)) {
|
|||
|
DynamicObject[] dataEntities = e.getDataEntities();
|
|||
|
for (DynamicObject dataEntity : dataEntities) {
|
|||
|
dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), "recos_aimadjust");
|
|||
|
DynamicObject decision = dataEntity.getDynamicObject("qeug_decision");//定标
|
|||
|
DynamicObjectCollection conPlanAdjustEntries = dataEntity.getDynamicObjectCollection("conplanadjustentry");// 未签约调整分录
|
|||
|
if (decision != null) {
|
|||
|
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(decision.getPkValue(), "rebm_decision");
|
|||
|
int sectionSeq = dataEntity.getInt("qeug_section_seq");
|
|||
|
|
|||
|
DynamicObjectCollection bottomSections = dynamicObject.getDynamicObjectCollection("bottomsection");
|
|||
|
if (bottomSections != null) {
|
|||
|
for (DynamicObject bottomSection : bottomSections) {
|
|||
|
int bottomSeq = bottomSection.getInt("seq");
|
|||
|
if (sectionSeq == bottomSeq) {
|
|||
|
DynamicObjectCollection bottomEntries = bottomSection.getDynamicObjectCollection("bottomentry");// 采购明细
|
|||
|
if (bottomEntries != null) {
|
|||
|
String billNo = dynamicObject.getString("billno");
|
|||
|
QFilter billNoQF = new QFilter("billno", QCP.equals, billNo);
|
|||
|
DynamicObject project = BusinessDataServiceHelper.loadSingle("rebm_project", billNoQF.toArray());// 标前预备会
|
|||
|
if (project != null) {
|
|||
|
DynamicObjectCollection bidSections = project.getDynamicObjectCollection("bidsection");// 标段
|
|||
|
DynamicObject bidSection = bidSections.get(sectionSeq - 1);
|
|||
|
DynamicObjectCollection projectEntries = bidSection.getDynamicObjectCollection("projectentry");// 采购明细
|
|||
|
|
|||
|
for (int i = 0; i < bottomEntries.size(); i++) {
|
|||
|
DynamicObject bottomEntry = bottomEntries.get(i);
|
|||
|
BigDecimal planAmount = bottomEntry.getBigDecimal("planamount");
|
|||
|
if (planAmount.intValue() == 0) continue;
|
|||
|
|
|||
|
DynamicObject projectEntry = projectEntries.get(i);
|
|||
|
DynamicObject cqprogcon = projectEntry.getDynamicObject("cqprogcon");// 合约规划
|
|||
|
if (conPlanAdjustEntries != null) {
|
|||
|
for (DynamicObject conPlanAdjustEntry : conPlanAdjustEntries) {
|
|||
|
DynamicObject conplan = conPlanAdjustEntry.getDynamicObject("cpentry_conplan");
|
|||
|
if (conplan.getLong("id") == cqprogcon.getLong("id")) {
|
|||
|
BigDecimal adjustSumAmt = conPlanAdjustEntry.getBigDecimal("cpentry_adjustsumamt");// 调整后金额
|
|||
|
bottomEntry.set("qeug_planamount", bottomEntry.getBigDecimal("planamount"));
|
|||
|
bottomEntry.set("qeug_botcontrolamount", bottomEntry.getBigDecimal("botcontrolamount"));
|
|||
|
|
|||
|
bottomEntry.set("planamount", adjustSumAmt);
|
|||
|
bottomEntry.set("botcontrolamount", adjustSumAmt);
|
|||
|
bottomEntry.set("botctrlamtexceptvat", adjustSumAmt);
|
|||
|
bottomEntry.set("nottaxplanamount", adjustSumAmt);
|
|||
|
|
|||
|
BigDecimal controlamount = dynamicObject.getBigDecimal("controlamount").add(adjustSumAmt.subtract(bottomEntry.getBigDecimal("botcontrolamount")));
|
|||
|
dynamicObject.set("controlamount", controlamount);
|
|||
|
dynamicObject.set("exctaxcontrolamount", controlamount);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
bottomSection.set("bottomentry", bottomEntries);
|
|||
|
dynamicObject.set("bottomsection", bottomSections);
|
|||
|
dynamicObject.set("qeug_conplan_adjust", String.valueOf(dataEntity.getPkValue()));
|
|||
|
SaveServiceHelper.update(dynamicObject);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|