Przeglądaj źródła

付款方向结算金额回写

wanwei 10 miesięcy temu
rodzic
commit
e377c43451

+ 27 - 13
src/main/java/fi/cas/opplugin/PaymentProcessOpPlugin.java

@@ -1,5 +1,6 @@
 package fi.cas.opplugin;
 
+import com.alibaba.druid.util.StringUtils;
 import dm.jdbc.util.StringUtil;
 import fi.cas.common.SettlementStatusEnum;
 import kd.bos.dataentity.entity.DynamicObject;
@@ -109,6 +110,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                     //报销单头数据包
                     DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName());
                     Long bxId = bxInfo.getLong("id");
+                    String nckd_sourcebillid = bxInfo.getString("nckd_sourcebillid");
                     //报账类型
                     String reimbursetype = bxInfo.getString("reimbursetype");
                     //已结算金额
@@ -166,29 +168,41 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                         }
                     }
                     //报账类型等于工程报账回写合同台账单
-                    if (StringUtil.equals("engineering",reimbursetype)) {
+                    if (!StringUtils.isEmpty(nckd_sourcebillid)) {
                         //获取合同台账单id
-                        Long contractbillId = bxInfo.getLong("sourcebillid");
+                        Long contractbillId = Long.parseLong(nckd_sourcebillid);
                         //查询合同台账单
                         QFilter htFilter = new QFilter("id", QCP.equals,contractbillId);
                         DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load(er_contractbill,"id",new QFilter[] {htFilter});
                         for (int j=0;j<htDynamicObjects.length;j++) {
                             //合同台账单头数据包
                             DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
-                            htInfo.set("oripayedamount",totalSettledamt);
-                            htInfo.set("orinotpayamount",totalUnsettledamt);
-                            if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
+                            //未结算金额
+                            BigDecimal nckd_unsettleamount = htInfo.getBigDecimal("nckd_unsettleamount");
+                            //已结算金额
+                            BigDecimal nckd_settleamount = htInfo.getBigDecimal("nckd_settleamount");
+                            if (nckd_unsettleamount.compareTo(totalSettledamt) > 0) {
+                                //未结算金额
+                                nckd_unsettleamount = nckd_unsettleamount.subtract(totalSettledamt);
+                                htInfo.set("orinotpayamount",nckd_unsettleamount);
+                            }else {
+                                htInfo.set("orinotpayamount",BigDecimal.ZERO);
+                            }
+                            nckd_settleamount = nckd_settleamount.add(totalSettledamt);
+                            htInfo.set("oripayedamount",nckd_settleamount);
+
+                            if (nckd_settleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_unsettleamount.compareTo(BigDecimal.ZERO) == 0) {
                                 htInfo.set("nckd_settlestatus", SettlementStatusEnum.已结算.getValue());
-                                htInfo.set("nckd_settleamount", totalSettledamt);
-                                htInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                            } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
+                                info.set("nckd_settleamount", nckd_settleamount);
+                                info.set("nckd_unsettleamount", BigDecimal.ZERO);
+                            } else if (nckd_unsettleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_settleamount.compareTo(BigDecimal.ZERO) == 0) {
                                 htInfo.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
-                                htInfo.set("nckd_settleamount", totalSettledamt);
-                                htInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                            } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
+                                info.set("nckd_settleamount", BigDecimal.ZERO);
+                                info.set("nckd_unsettleamount", nckd_unsettleamount);
+                            } else if (nckd_settleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_settleamount.compareTo(BigDecimal.ZERO) > 0) {
                                 htInfo.set("nckd_settlestatus", SettlementStatusEnum.部分结算.getValue());
-                                htInfo.set("nckd_settleamount", totalSettledamt);
-                                htInfo.set("nckd_unsettleamount", totalUnsettledamt);
+                                info.set("nckd_settleamount", nckd_settleamount);
+                                info.set("nckd_unsettleamount", nckd_unsettleamount);
                             }
                             SaveServiceHelper.save(new DynamicObject[]{htInfo});
                         }

+ 17 - 5
src/main/java/fi/cas/opplugin/UnPaymentProcessOpPlugin.java

@@ -1,5 +1,6 @@
 package fi.cas.opplugin;
 
+import com.alibaba.druid.util.StringUtils;
 import dm.jdbc.util.StringUtil;
 import fi.cas.common.SettlementStatusEnum;
 import kd.bos.dataentity.entity.DynamicObject;
@@ -109,6 +110,7 @@ public class UnPaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                     //报销单头数据包
                     DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName());
                     Long bxId = bxInfo.getLong("id");
+                    String nckd_sourcebillid = bxInfo.getString("nckd_sourcebillid");
                     //报账类型
                     String reimbursetype = bxInfo.getString("reimbursetype");
                     //已结算金额
@@ -144,19 +146,29 @@ public class UnPaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                         }
                     }
                     //报账类型等于工程报账回写合同台账单
-                    if (StringUtil.equals("engineering",reimbursetype)) {
+                    if (!StringUtils.isEmpty(nckd_sourcebillid)) {
                         //获取合同台账单id
-                        Long contractbillId = bxInfo.getLong("sourcebillid");
+                        Long contractbillId = Long.parseLong(nckd_sourcebillid);
                         //查询合同台账单
                         QFilter htFilter = new QFilter("id", QCP.equals,contractbillId);
                         DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load(er_contractbill,"id",new QFilter[] {htFilter});
                         for (int j=0;j<htDynamicObjects.length;j++) {
                             //合同台账单头数据包
                             DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
-                            htInfo.set("oripayedamount",totalSettledamt);
-                            htInfo.set("orinotpayamount",totalUnsettledamt);
+                            //未结算金额
+                            BigDecimal nckd_unsettleamount = htInfo.getBigDecimal("nckd_unsettleamount");
+                            //已结算金额
+                            BigDecimal nckd_settleamount = htInfo.getBigDecimal("nckd_settleamount");
+                            if (nckd_settleamount.compareTo(totalUnsettledamt) > 0) {
+                                nckd_settleamount = nckd_settleamount.subtract(totalUnsettledamt);
+                            }else {
+                                nckd_settleamount = BigDecimal.ZERO;
+                            }
+                            nckd_unsettleamount = nckd_unsettleamount.add(totalUnsettledamt);
+                            htInfo.set("oripayedamount",nckd_settleamount);
+                            htInfo.set("orinotpayamount",nckd_unsettleamount);
                             //结算字段赋值
-                            settleMethod(htInfo,"nckd_settlestatus","nckd_settleamount","nckd_unsettleamount",totalSettledamt,totalUnsettledamt);
+                            settleMethod(htInfo,"nckd_settlestatus","nckd_settleamount","nckd_unsettleamount",nckd_settleamount,nckd_unsettleamount);
                             SaveServiceHelper.save(new DynamicObject[]{htInfo});
                         }
                     }