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

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.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -46,21 +47,24 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi
log.info("MaterialInAmountToItemEntryWorkFlowPlugin:入库单推送支出合同结算单"); log.info("MaterialInAmountToItemEntryWorkFlowPlugin:入库单推送支出合同结算单");
if(outContractSettleMap != null && !outContractSettleMap.isEmpty()) { if(outContractSettleMap != null && !outContractSettleMap.isEmpty()) {
log.info("MaterialInAmountToItemEntryWorkFlowPlugin:"+businessKey); log.info("MaterialInAmountToItemEntryWorkFlowPlugin:"+businessKey);
Long dataId = (Long) outContractSettleMap.toArray()[0]; for (Long dataId : outContractSettleMap) {
DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle"); DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle");
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno")); log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno"));
sumMaterialInAmountToItemEntry(outContractSettle); sumMaterialInAmountToItemEntry(outContractSettle);
calAllTypeAmount(outContractSettle); calAllTypeAmount(outContractSettle);
SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); SaveServiceHelper.save(new DynamicObject[]{outContractSettle});
OperateOption option= OperateOption.create();
// option.setVariableValue("ishasright", "true");//此处是跳过校验权限 deleteZeroData(dataId);
// option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false)); OperateOption option= OperateOption.create();
// option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); // option.setVariableValue("ishasright", "true");//此处是跳过校验权限
// option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); // option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false));
option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验 // option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true));
//option.add(OperateOptionConst.SKIP_PERMISSION_CHECK); // option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true));
OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option); option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验
log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString()); //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); 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});
}
} }