Browse Source

差旅报销单问题修改

zhouger 8 months ago
parent
commit
755359270d
1 changed files with 50 additions and 52 deletions
  1. 50 52
      src/main/java/fi/em/formPlugin/AmountEditPlugin.java

+ 50 - 52
src/main/java/fi/em/formPlugin/AmountEditPlugin.java

@@ -37,27 +37,6 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
     {
         super.beforePropertyChanged(e);
         String name = e.getProperty().getName();
-        //重新出发付现金额计算
-        if(nckd_unexporiusedamount.equals(name))
-        {
-            DynamicObject data=this.getModel().getDataEntity();//获取单据模型
-            DynamicObjectCollection tripentry = data.getDynamicObjectCollection("tripentry");//获取形成信息分录
-            //付现金额触发
-            for (DynamicObject item:tripentry) {
-                DynamicObjectCollection entryentity_cl=item.getDynamicObjectCollection("entryentity");//差旅明细分录
-                for (int i=0;i< entryentity_cl.size();i++) {
-                    //判断报销金额是否有值
-                    if (entryentity_cl.get(i).getBigDecimal("orientryamount").compareTo(BigDecimal.ZERO)>0) {
-                        BigDecimal amount=entryentity_cl.get(i).getBigDecimal("orientryamount");
-                        this.getModel().setValue("orientryamount",0,i);
-                        this.getModel().setValue("orientryamount",amount,i);
-                        break;
-                    }
-                }
-            }
-
-        }
-
 
         if (nckd_unexporiusedamount.equals(name)||orientryamount.equals(name))
         {
@@ -67,7 +46,7 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
             //费用合计
             BigDecimal amountfy=new BigDecimal("0");
             //行程信息
-            DynamicObjectCollection tripentry = data.getDynamicObjectCollection("tripentry");//获取形成信息分录
+            DynamicObjectCollection tripentry = this.getModel().getEntryEntity("tripentry");//获取形成信息分录
             for (DynamicObject item:tripentry) {
                 DynamicObjectCollection entryentity_cl=item.getDynamicObjectCollection("entryentity");//差旅明细分录
                 for (int i=0;i< entryentity_cl.size();i++) {
@@ -76,7 +55,8 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
                 }
             }
             //amountfy报销金额总和
-            DynamicObjectCollection nckd_clearloanentry = data.getDynamicObjectCollection("nckd_clearloanentry");//获取冲预付借款分录
+            //获取冲预付借款分录
+            DynamicObjectCollection nckd_clearloanentry=this.getModel().getEntryEntity("nckd_clearloanentry");
             for (DynamicObject entryentity:nckd_clearloanentry)
             {
                 //冲销金额
@@ -86,41 +66,59 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
             }
             //计算收款金额
             this.getModel().setValue("orireceiveamount",amountfy.subtract(orgiexpebalanceamount_sum),0);
-
-
             //反写预付借款单未核销金额(借款余额)
             //获取冲预付借款分录
-             nckd_clearloanentry=data.getDynamicObjectCollection("nckd_clearloanentry");
-            //获取分录改变行号
-            int number=e.getChangeSet()[0].getRowIndex();
-            //数据id
-            Long id=nckd_clearloanentry.get(number).getLong("nckd_bigintfield");
-            //冲销金额
-            BigDecimal nckd_unexporiusedamount=nckd_clearloanentry.get(number).getBigDecimal("nckd_unexporiusedamount");
-            //借款余额
-            BigDecimal nckd_exporiusedamount=nckd_clearloanentry.get(number).getBigDecimal("nckd_exporiusedamount");
-            //获取改变行预付单借款编号
-            String nckd_billno=nckd_clearloanentry.get(number).getString("nckd_billno");
-            //根据行号查询预付借款单预付信息数据
-            QFilter nckd_orgamountFilter = new QFilter("billno", QCP.equals, nckd_billno);
-            DynamicObject[] nckd_orgamountaccount = BusinessDataServiceHelper.
-                    load(er_prepaybill, "id,number", new QFilter[]{nckd_orgamountFilter});
-            for (int i=0;i<nckd_orgamountaccount.length;i++) {
-                DynamicObject dynamicObject = BusinessDataServiceHelper.
-                        loadSingle(nckd_orgamountaccount[i].getPkValue(), nckd_orgamountaccount[i].getDynamicObjectType().getName());
-                //获取预付信息分录
-                DynamicObjectCollection expenseentryentity=dynamicObject.getDynamicObjectCollection("expenseentryentity");
-                for (DynamicObject list:expenseentryentity) {
-                    Long listid=list.getLong("id");
-                    if (listid.equals(id)) {
-                        //未核销金额(借款余额)=借款余额-冲销金额
-                        list.set("nckd_settleamount_et",nckd_exporiusedamount.subtract(nckd_unexporiusedamount));
-                        SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
+             if(!nckd_clearloanentry.isEmpty()&nckd_unexporiusedamount.equals(name))
+             {
+                 //获取分录改变行号
+                 int number=e.getChangeSet()[0].getRowIndex();
+                 //数据id
+                 Long id=nckd_clearloanentry.get(number).getLong("nckd_bigintfield");
+                 //冲销金额
+                 BigDecimal nckd_unexporiusedamount=nckd_clearloanentry.get(number).getBigDecimal("nckd_unexporiusedamount");
+                 //借款余额
+                 BigDecimal nckd_exporiusedamount=nckd_clearloanentry.get(number).getBigDecimal("nckd_exporiusedamount");
+                 //获取改变行预付单借款编号
+                 String nckd_billno=nckd_clearloanentry.get(number).getString("nckd_billno");
+                 //根据行号查询预付借款单预付信息数据
+                 QFilter nckd_orgamountFilter = new QFilter("billno", QCP.equals, nckd_billno);
+                 DynamicObject[] nckd_orgamountaccount = BusinessDataServiceHelper.
+                         load(er_prepaybill, "id,number", new QFilter[]{nckd_orgamountFilter});
+                 for (int i=0;i<nckd_orgamountaccount.length;i++) {
+                     DynamicObject dynamicObject = BusinessDataServiceHelper.
+                             loadSingle(nckd_orgamountaccount[i].getPkValue(), nckd_orgamountaccount[i].getDynamicObjectType().getName());
+                     //获取预付信息分录
+                     DynamicObjectCollection expenseentryentity=dynamicObject.getDynamicObjectCollection("expenseentryentity");
+                     for (DynamicObject list:expenseentryentity) {
+                         Long listid=list.getLong("id");
+                         if (listid.equals(id)) {
+                             //未核销金额(借款余额)=借款余额-冲销金额
+                             list.set("nckd_settleamount_et",nckd_exporiusedamount.subtract(nckd_unexporiusedamount));
+                             SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
+                         }
+                     }
+                 }
+             }
+        }
+
+        //重新触发付现金额计算
+        if(nckd_unexporiusedamount.equals(name))
+        {
+            DynamicObjectCollection tripentry = this.getModel().getEntryEntity("tripentry");//获取形成信息分录
+            //付现金额触发
+            for (DynamicObject item:tripentry) {
+                DynamicObjectCollection entryentity_cl=item.getDynamicObjectCollection("entryentity");//差旅明细分录
+                for (int i=0;i< entryentity_cl.size();i++) {
+                    //判断报销金额是否有值
+                    if (entryentity_cl.get(i).getBigDecimal("orientryamount").compareTo(BigDecimal.ZERO)>0) {
+                        BigDecimal amount=entryentity_cl.get(i).getBigDecimal("orientryamount");
+                        this.getModel().setValue("orientryamount",0,i);
+                        this.getModel().setValue("orientryamount",amount,i);
+                        break;
                     }
                 }
             }
 
-
         }
     }