入库单计算支出合同结算单支付项目分录金额插件增加循环处理

This commit is contained in:
zhangzhiguo 2025-10-31 11:18:39 +08:00
parent 475cc8f4f4
commit 27f8682764
1 changed files with 47 additions and 15 deletions

View File

@ -24,6 +24,7 @@ import kd.ec.contract.common.enums.PayDirectionEnum;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@ -46,21 +47,24 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi
log.info("MaterialInAmountToItemEntryWorkFlowPlugin:入库单推送支出合同结算单");
if(outContractSettleMap != null && !outContractSettleMap.isEmpty()) {
log.info("MaterialInAmountToItemEntryWorkFlowPlugin:"+businessKey);
Long dataId = (Long) outContractSettleMap.toArray()[0];
DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle");
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno"));
sumMaterialInAmountToItemEntry(outContractSettle);
calAllTypeAmount(outContractSettle);
SaveServiceHelper.save(new DynamicObject[]{outContractSettle});
OperateOption option= OperateOption.create();
// option.setVariableValue("ishasright", "true");//此处是跳过校验权限
// option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false));
// option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true));
// option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true));
option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验
//option.add(OperateOptionConst.SKIP_PERMISSION_CHECK);
OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option);
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString());
for (Long dataId : outContractSettleMap) {
DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle");
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno"));
sumMaterialInAmountToItemEntry(outContractSettle);
calAllTypeAmount(outContractSettle);
SaveServiceHelper.save(new DynamicObject[]{outContractSettle});
deleteZeroData(dataId);
OperateOption option= OperateOption.create();
// option.setVariableValue("ishasright", "true");//此处是跳过校验权限
// option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false));
// option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true));
// option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true));
option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验
//option.add(OperateOptionConst.SKIP_PERMISSION_CHECK);
OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option);
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString());
}
}
}
@ -284,4 +288,32 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi
outContractSettle.set("totalrealpaytaxamt", totalRealPayTaxAmt);
}
}
public void deleteZeroData(Long outContractSettleId){
DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle",
"itementry,itementry.oftaxamount,zcgj_entryentity,zcgj_entryentity.zcgj_oftaxinvoiceamount,zcgj_processallocatentity,zcgj_processallocatentity.zcgj_pa_amount",
new QFilter[]{new QFilter("id","=",outContractSettleId)});
DynamicObjectCollection itementryCollection = outContractSettle.getDynamicObjectCollection("itementry"); //合同支付项分录
for (DynamicObject itementry : itementryCollection) {
//删除工序分摊价税合计为0的数据
DynamicObjectCollection dynamicObjectCollection = itementry.getDynamicObjectCollection("zcgj_processallocatentity");
dynamicObjectCollection.removeIf(dynamicObject -> dynamicObject.getBigDecimal("zcgj_pa_amount") == null || dynamicObject.getBigDecimal("zcgj_pa_amount").compareTo(BigDecimal.ZERO) == 0);
}
//删除合同支付项价税合计为0的数据
itementryCollection.removeIf(dynamicObject ->
//dynamicObject.getBigDecimal("oftaxamount") == null || dynamicObject.getBigDecimal("oftaxamount").compareTo(BigDecimal.ZERO) == 0
{
boolean isok = dynamicObject.getBigDecimal("oftaxamount") == null || dynamicObject.getBigDecimal("oftaxamount").compareTo(BigDecimal.ZERO) == 0;
DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("zcgj_processallocatentity");
return isok && dynamicObjectCollection.isEmpty();
}
);
//删除进项发票价税合计为0的数据
DynamicObjectCollection entryentityCollection = outContractSettle.getDynamicObjectCollection("zcgj_entryentity");
entryentityCollection.removeIf(dynamicObject -> dynamicObject.getBigDecimal("zcgj_oftaxinvoiceamount") == null || dynamicObject.getBigDecimal("zcgj_oftaxinvoiceamount").compareTo(BigDecimal.ZERO) == 0);
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-PaAmount");
SaveServiceHelper.save(new DynamicObject[]{outContractSettle});
}
}