按入库单结算-判断上游有入库单时反写付款申请

This commit is contained in:
zhangzhiguo 2025-11-18 15:19:56 +08:00
parent 17a68ff852
commit b9905f695e
3 changed files with 36 additions and 83 deletions

View File

@ -34,6 +34,7 @@ public class OutFinaceconfirmReversalamountCkOp extends AbstractOperationService
e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplyentryid"); e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplyentryid");
e.getFieldKeys().add("zcgj_prepayentry.zcgj_boltamount"); e.getFieldKeys().add("zcgj_prepayentry.zcgj_boltamount");
e.getFieldKeys().add("zcgj_isprepay"); e.getFieldKeys().add("zcgj_isprepay");
e.getFieldKeys().add("zcgj_billsource");
} }
@Override @Override
@ -48,9 +49,8 @@ public class OutFinaceconfirmReversalamountCkOp extends AbstractOperationService
ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
DynamicObject dataEntity = extendedDataEntity.getDataEntity();//支出财务确认单 DynamicObject dataEntity = extendedDataEntity.getDataEntity();//支出财务确认单
DynamicObjectCollection entryEntityCollection = dataEntity.getDynamicObjectCollection("zcgj_prepayentry");//付款信息分录 String billsource = dataEntity.getString("zcgj_billsource");
for (int i = 0; i < entryEntityCollection.size(); i++) { if(!"1".equals(billsource)){ //来源入库单时不进行校验
DynamicObject entryEntity = entryEntityCollection.get(i);
DynamicObjectCollection prepayentryCollection = dataEntity.getDynamicObjectCollection("zcgj_prepayentry");//冲销预付分录 DynamicObjectCollection prepayentryCollection = dataEntity.getDynamicObjectCollection("zcgj_prepayentry");//冲销预付分录
String isprepay = dataEntity.getString("zcgj_isprepay"); String isprepay = dataEntity.getString("zcgj_isprepay");
if("10".equals(isprepay)){ if("10".equals(isprepay)){
@ -62,7 +62,7 @@ public class OutFinaceconfirmReversalamountCkOp extends AbstractOperationService
seq++; seq++;
long sourceapplybillid = prepay.getLong("zcgj_sourceapplybillid"); long sourceapplybillid = prepay.getLong("zcgj_sourceapplybillid");
long sourceapplyentryid = prepay.getLong("zcgj_sourceapplyentryid"); long sourceapplyentryid = prepay.getLong("zcgj_sourceapplyentryid");
BigDecimal boltamount = prepay.getBigDecimal("zcgj_boltamount");//支出财务确认单冲销金额 BigDecimal boltamount = prepay.getBigDecimal("zcgj_boltamount");//支出财务确认单本次冲销金额
DynamicObject paymentapply = BusinessDataServiceHelper.loadSingle(sourceapplybillid, "ec_paymentapply");//工程资金付款申请单 DynamicObject paymentapply = BusinessDataServiceHelper.loadSingle(sourceapplybillid, "ec_paymentapply");//工程资金付款申请单
if (paymentapply != null) { if (paymentapply != null) {
DynamicObjectCollection entryentityCollection = paymentapply.getDynamicObjectCollection("entryentity"); DynamicObjectCollection entryentityCollection = paymentapply.getDynamicObjectCollection("entryentity");
@ -83,6 +83,7 @@ public class OutFinaceconfirmReversalamountCkOp extends AbstractOperationService
} }
} }
} }
} }
} }
} }

View File

@ -31,6 +31,7 @@ public class OutFinaceconfirmReversalamountOp extends AbstractOperationServicePl
e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplybillid"); e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplybillid");
e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplyentryid"); e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplyentryid");
e.getFieldKeys().add("zcgj_prepayentry.zcgj_boltamount"); e.getFieldKeys().add("zcgj_prepayentry.zcgj_boltamount");
e.getFieldKeys().add("zcgj_billsource");
} }
@Override @Override
@ -55,6 +56,8 @@ public class OutFinaceconfirmReversalamountOp extends AbstractOperationServicePl
List<DynamicObject> updateData = new ArrayList<>(); List<DynamicObject> updateData = new ArrayList<>();
for (DynamicObject dataEntity : dataEntities) { for (DynamicObject dataEntity : dataEntities) {
long id = dataEntity.getLong("id"); long id = dataEntity.getLong("id");
String billsource = dataEntity.getString("zcgj_billsource");
if("1".equals(billsource)){//来源入库单时不反写付款申请单
DynamicObjectCollection prepayentryCollection = dataEntity.getDynamicObjectCollection("zcgj_prepayentry");//冲销预付分录 DynamicObjectCollection prepayentryCollection = dataEntity.getDynamicObjectCollection("zcgj_prepayentry");//冲销预付分录
for (DynamicObject prepay : prepayentryCollection) { for (DynamicObject prepay : prepayentryCollection) {
long sourceapplybillid = prepay.getLong("zcgj_sourceapplybillid"); long sourceapplybillid = prepay.getLong("zcgj_sourceapplybillid");
@ -83,63 +86,7 @@ public class OutFinaceconfirmReversalamountOp extends AbstractOperationServicePl
SaveServiceHelper.save(updateData.toArray(new DynamicObject[0])); SaveServiceHelper.save(updateData.toArray(new DynamicObject[0]));
} }
} }
// idList.add(id);
/*Map<String, HashSet<Long>> sourceBills = BFTrackerServiceHelper.findSourceBills("cas_paybill", new Long[]{id});
HashSet<Long> zcgjEcFundingplanapply = sourceBills.get("zcgj_ec_fundingplanapply");
if(zcgjEcFundingplanapply != null && !zcgjEcFundingplanapply.isEmpty()) {
Long dataId = (Long)zcgjEcFundingplanapply.toArray()[0];
//计算实际付款金额
DynamicObject paybill = BusinessDataServiceHelper.loadSingle(id, "cas_paybill");
DynamicObject settletype = paybill.getDynamicObject("settletype");
String typeString = "";
DynamicObjectCollection entryCpllection = paybill.getDynamicObjectCollection("entry");
BigDecimal allActamt = BigDecimal.ZERO;
for (DynamicObject entry : entryCpllection) {
BigDecimal val = entry.getBigDecimal("e_actamt");
BigDecimal eActamt = val !=null ?val:BigDecimal.ZERO;//获取实付金额
allActamt = allActamt.add(eActamt);
}
//读取资金计划申请
DynamicObject fundingplanapply = BusinessDataServiceHelper.loadSingle(dataId, "zcgj_ec_fundingplanapply");
DynamicObjectCollection zcgjFinApprovedAmount = fundingplanapply.getDynamicObjectCollection("zcgj_fin_approved_amount");
for (DynamicObject dynamicObject : zcgjFinApprovedAmount) {
String zcgjSetttype = dynamicObject.getString("zcgj_setttype");
if(typeString.equals(zcgjSetttype)){
BigDecimal zcgjAmountpaid = dynamicObject.getBigDecimal("zcgj_amountpaid");
BigDecimal zcgjAmountRecommended = zcgjAmountpaid !=null ? zcgjAmountpaid:BigDecimal.ZERO;//实际付款金额
BigDecimal amountrecommended = BigDecimal.ZERO;
if(!isSubmit){
amountrecommended = allActamt;
allActamt = allActamt.multiply(BigDecimal.ZERO.subtract(BigDecimal.ONE));//取相反数
}
allActamt = allActamt.add(zcgjAmountRecommended);
dynamicObject.set("zcgj_amountpaid", allActamt);//实付金额
dynamicObject.set("zcgj_amount_inpayment",amountrecommended);//
//zcgj_amount_remaining = zcgj_hdamount - zcgj_amount_inpayment - zcgj_amountpaid
//剩余待拨付金额 = 财务核定金额 - 付款处理中金额 - 实付金额
BigDecimal hdamount = dynamicObject.getBigDecimal("zcgj_hdamount");
if(hdamount !=null && isSubmit){
BigDecimal subtract = hdamount.subtract(amountrecommended).subtract(allActamt);
dynamicObject.set("zcgj_amount_remaining",subtract);
}else if(hdamount != null){
BigDecimal subtract = hdamount.add(amountrecommended).subtract(allActamt);//实付金额已经成为相反数
dynamicObject.set("zcgj_amount_remaining",subtract);
} }
} }
} }
updateData.add(fundingplanapply);
}*/
}
/*if(!updateData.isEmpty()){
try (TXHandle txType = TX.requiresNew("updateAmt")) {
SaveServiceHelper.save(updateData.toArray(new DynamicObject[0]));
}
}*/
}
} }

View File

@ -27,6 +27,7 @@ public class OutContractSettleFiConfirmWorkFlowPlugin implements IWorkflowPlugin
boolean isReversabillid = outContractSettle.getBoolean("zcgj_is_reversabillid"); boolean isReversabillid = outContractSettle.getBoolean("zcgj_is_reversabillid");
boolean isInvalid = outContractSettle.getBoolean("zcgj_is_invalid"); boolean isInvalid = outContractSettle.getBoolean("zcgj_is_invalid");
boolean nofinconfirm = outContractSettle.getBoolean("zcgj_nofinconfirm"); boolean nofinconfirm = outContractSettle.getBoolean("zcgj_nofinconfirm");
if(!isReversabillid && !isInvalid && !nofinconfirm) { if(!isReversabillid && !isInvalid && !nofinconfirm) {
//如果时冲销单据 //如果时冲销单据
//生成支出财务确认单 start //生成支出财务确认单 start
@ -51,6 +52,10 @@ public class OutContractSettleFiConfirmWorkFlowPlugin implements IWorkflowPlugin
outFinaceconfirm.set("zcgj_jscustomer",outContractSettle.getDynamicObject("zcgj_jscustomer")); outFinaceconfirm.set("zcgj_jscustomer",outContractSettle.getDynamicObject("zcgj_jscustomer"));
outFinaceconfirm.set("billstatus","A"); outFinaceconfirm.set("billstatus","A");
outFinaceconfirm.set("creator",outContractSettle.getDynamicObject("creator")); outFinaceconfirm.set("creator",outContractSettle.getDynamicObject("creator"));
//按入库单结算-判断上游有入库单
if(outContractSettle.getBoolean("issettlebymatin")){
outFinaceconfirm.set("zcgj_billsource","1");
}
DynamicObjectCollection itementry = outContractSettle.getDynamicObjectCollection("itementry"); DynamicObjectCollection itementry = outContractSettle.getDynamicObjectCollection("itementry");
DynamicObjectCollection entryEntity1 = outFinaceconfirm.getDynamicObjectCollection("zcgj_itementry"); DynamicObjectCollection entryEntity1 = outFinaceconfirm.getDynamicObjectCollection("zcgj_itementry");