支出财务确认单增加是否冲预付的判断

This commit is contained in:
zhangzhiguo 2025-10-14 14:08:20 +08:00
parent aff78c9e0a
commit 29f0fd2435
1 changed files with 25 additions and 36 deletions

View File

@ -33,6 +33,7 @@ public class OutFinaceconfirmReversalamountCkOp extends AbstractOperationService
e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplybillid");
e.getFieldKeys().add("zcgj_prepayentry.zcgj_sourceapplyentryid");
e.getFieldKeys().add("zcgj_prepayentry.zcgj_boltamount");
e.getFieldKeys().add("zcgj_isprepay");
}
@Override
@ -51,48 +52,36 @@ public class OutFinaceconfirmReversalamountCkOp extends AbstractOperationService
for (int i = 0; i < entryEntityCollection.size(); i++) {
DynamicObject entryEntity = entryEntityCollection.get(i);
DynamicObjectCollection prepayentryCollection = dataEntity.getDynamicObjectCollection("zcgj_prepayentry");//冲销预付分录
int seq = 0;
for (DynamicObject prepay : prepayentryCollection) {
seq++;
long sourceapplybillid = prepay.getLong("zcgj_sourceapplybillid");
long sourceapplyentryid = prepay.getLong("zcgj_sourceapplyentryid");
BigDecimal boltamount = prepay.getBigDecimal("zcgj_boltamount");//支出财务确认单冲销金额
DynamicObject paymentapply = BusinessDataServiceHelper.loadSingle(sourceapplybillid, "ec_paymentapply");//工程资金付款申请单
if (paymentapply != null) {
DynamicObjectCollection entryentityCollection = paymentapply.getDynamicObjectCollection("entryentity");
String isprepay = dataEntity.getString("zcgj_isprepay");
if("10".equals(isprepay)){
if(prepayentryCollection == null || prepayentryCollection.isEmpty()){
this.addFatalErrorMessage(extendedDataEntity, String.format("请录入冲销预付明细数据!"));
}else{
int seq = 0;
for (DynamicObject prepay : prepayentryCollection) {
seq++;
long sourceapplybillid = prepay.getLong("zcgj_sourceapplybillid");
long sourceapplyentryid = prepay.getLong("zcgj_sourceapplyentryid");
BigDecimal boltamount = prepay.getBigDecimal("zcgj_boltamount");//支出财务确认单冲销金额
DynamicObject paymentapply = BusinessDataServiceHelper.loadSingle(sourceapplybillid, "ec_paymentapply");//工程资金付款申请单
if (paymentapply != null) {
DynamicObjectCollection entryentityCollection = paymentapply.getDynamicObjectCollection("entryentity");
for (DynamicObject dynamicObject : entryentityCollection) {
BigDecimal thisrealpayamt = dynamicObject.getBigDecimal("thisrealpayamt");//付款申请单本次实付金额
long pkValue = (long)dynamicObject.getPkValue();
if(pkValue==sourceapplyentryid){
BigDecimal zcgjYreversalamount = dynamicObject.getBigDecimal("zcgj_yreversalamount");
zcgjYreversalamount = zcgjYreversalamount.add(boltamount);
if(thisrealpayamt.subtract(zcgjYreversalamount).compareTo(BigDecimal.ZERO) < 0){
this.addFatalErrorMessage(extendedDataEntity, String.format("冲销预付分录第%d行冲销金额超限",seq));
for (DynamicObject dynamicObject : entryentityCollection) {
BigDecimal thisrealpayamt = dynamicObject.getBigDecimal("thisrealpayamt");//付款申请单本次实付金额
long pkValue = (long)dynamicObject.getPkValue();
if(pkValue==sourceapplyentryid){
BigDecimal zcgjYreversalamount = dynamicObject.getBigDecimal("zcgj_yreversalamount");
zcgjYreversalamount = zcgjYreversalamount.add(boltamount);
if(thisrealpayamt.subtract(zcgjYreversalamount).compareTo(BigDecimal.ZERO) < 0){
this.addFatalErrorMessage(extendedDataEntity, String.format("冲销预付分录第%d行冲销金额超限",seq));
}
}
}
}
}
}
}
/*DynamicObject contract = entryEntity.getDynamicObject("contract");//合同名称
String contractNumber = null;
if (contract != null) {
contractNumber = contract.getString("number");//合同编号
}
String paymentType = entryEntity.getString("paymenttype");//支付类型
DynamicObject settleType = entryEntity.getDynamicObject("settletype");//结算方式
String settleTypeName = null;
if (settleType != null) {
settleTypeName = settleType.getString("name");//结算方式编码
}
String combinationKey = contractNumber + "|" + paymentType + "|" + settleTypeName;
if (combinationIndices.containsKey(combinationKey)) {
this.addFatalErrorMessage(extendedDataEntity, "付款信息中一个合同不能填写多行相同的支付类型+结算方式");
} else {
List<Integer> indices = new ArrayList<>();
indices.add(i);
combinationIndices.put(combinationKey, indices);
}*/
}
}
}