Sfoglia il codice sorgente

甬台温中间计量支付扣回动员预付款计算逻辑改变

cr 2 mesi fa
parent
commit
6f2e59312a

+ 3 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RebateIncentiveAdvPay.java

@@ -36,9 +36,10 @@ public class RebateIncentiveAdvPay implements  DataModel{
     private String previousPay ;
     @JSONField(name = "key_7",label="本期扣回金额",ordinal = 10)
     private String currentPay ;
-    public void calc(String contractAmount,String dyTotalAmount){
+    public void calc(String contractAmount,String dyTotalAmount,String currentPeriodEndPay){
         double contractAmountD=BaseUtils.obj2DoubleZero(contractAmount);
-        double x=(2*(BaseUtils.obj2DoubleZero(subtotal)-0.3*contractAmountD)*BaseUtils.obj2DoubleZero(dyTotalAmount))/contractAmountD;
+        //2025/7/23  修改逻辑 将最后算出来的值需要减去上期末的扣回动员预付款 currentPeriodEndPay
+        double x=((2*(BaseUtils.obj2DoubleZero(subtotal) -0.3*contractAmountD)*BaseUtils.obj2DoubleZero(dyTotalAmount))/contractAmountD)-BaseUtils.obj2DoubleZero(currentPeriodEndPay);
         if(x>0){
             /*扣回款本身就是负数*/
             String s=new BigDecimal(x).setScale(5,BigDecimal.ROUND_HALF_UP).toPlainString();

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -1349,13 +1349,16 @@ public class ExecutorMeter extends FormulaExecutor {
                                      }
                                      rebateIncentiveAdvPay.setRetained(rebateIncentiveAdvPay.getCurrentPay());
                                  } else {
-                                     rebateIncentiveAdvPay.calc(baseInfo.getContractAmount().toPlainString(), dyTotalAmount);
+                                     rebateIncentiveAdvPay.calc(baseInfo.getContractAmount().toPlainString(), dyTotalAmount,preSubTotal.getCurrentPeriodEndPay());
                                  }
                                  if (preSubTotal != null) {
                                      rebateIncentiveAdvPay.setEndPay(addFc.apply(rebateIncentiveAdvPay.getCurrentPay(), preSubTotal.getCurrentPeriodEndPay()));
                                  } else {
                                      rebateIncentiveAdvPay.setEndPay(rebateIncentiveAdvPay.getCurrentPay());
                                  }
+                                 if(preSubTotal!=null){
+                                     rebateIncentiveAdvPay.setPreviousPay(preSubTotal.getCurrentPeriodEndPay());
+                                 }
                              }
 
                          }else if("材料预付款".equals(certificate.getChapterSeq())){