Pārlūkot izejas kodu

差旅报销单反写借款余额

zhouger 8 mēneši atpakaļ
vecāks
revīzija
cfed9f0deb

+ 43 - 2
src/main/java/fi/em/formPlugin/AmountEditPlugin.java

@@ -8,6 +8,10 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.fi.er.business.daily.reimburse.AmountObject;
 import kd.fi.er.mservice.ext.IErService4Ext;
 import kd.sdk.plugin.Plugin;
@@ -26,12 +30,14 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
     public static String nckd_unexporiusedamount="nckd_unexporiusedamount";//冲销金额标识
     public static String nckd_er_tripreimburse_ext="nckd_er_tripreimburse_ext";//差旅报销单标识
     public static String orientryamount="orientryamount";//报销金额字段标识
+    private static String er_prepaybill = "er_prepaybill";//预付借款单标识
 
     @Override
     public void propertyChanged(PropertyChangedArgs e)
     {
         super.beforePropertyChanged(e);
         String name = e.getProperty().getName();
+        //重新出发付现金额计算
         if(nckd_unexporiusedamount.equals(name))
         {
             DynamicObject data=this.getModel().getDataEntity();//获取单据模型
@@ -49,8 +55,10 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
                     }
                 }
             }
+
         }
 
+
         if (nckd_unexporiusedamount.equals(name)||orientryamount.equals(name))
         {
             DynamicObject data=this.getModel().getDataEntity();//获取单据模型
@@ -66,7 +74,6 @@ public class AmountEditPlugin extends AbstractListPlugin implements Plugin,IErSe
                     //报销金额总和
                     amountfy=amountfy.add(entryentity_cl.get(i).getBigDecimal("orientryamount"));
                 }
-
             }
             //amountfy报销金额总和
             DynamicObjectCollection nckd_clearloanentry = data.getDynamicObjectCollection("nckd_clearloanentry");//获取冲预付借款分录
@@ -79,8 +86,42 @@ 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});
+                    }
+                }
+            }
+
+
+        }
     }
 
 }

+ 37 - 36
src/main/java/fi/em/formPlugin/ReimbursementFormPlugin.java

@@ -2,6 +2,7 @@ package fi.em.formPlugin;
 import com.aliyun.odps.security.User;
 import kd.bos.exception.KDBizException;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.fi.er.mservice.ext.IErService4Ext;
 import kd.sdk.plugin.Plugin;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -28,9 +29,9 @@ import java.util.*;
 public class ReimbursementFormPlugin extends AbstractFormPlugin implements Plugin {
     private final static String KEY_OK = "btnok";//确定按钮标识
     private final static String KEY_CANCEL = "btncancel";//页面取消按钮标识
-    private final static String KEY_SEARCH = "search";//动态表单查询按钮操作
     private final static String FORMID_ENTRY = "nckd_entryentity";//动态表单单据体标识
     private static String er_prepaybill = "er_prepaybill";//预付单标识
+    private static String nckd_er_prepaybill_ext="nckd_er_prepaybill_ext";//预付借款单标识
 
     /**
      * 页面点击事件
@@ -72,7 +73,7 @@ public class ReimbursementFormPlugin extends AbstractFormPlugin implements Plugi
             }
             this.getView().close();
         } else if (StringUtils.equals(source.getKey(), KEY_CANCEL)) {
-            //被点击控件为取消则设置返回值为空并关闭页面(在页面关闭回调方法中必须验证返回值不为空,否则会报空指针)
+            //被点击控件为取消则设置返回值为空并关闭页面(在页面关闭回调方yu法中必须验证返回值不为空,否则会报空指针)
             this.getView().returnDataToParent(null);
             this.getView().close();
         } else {
@@ -108,57 +109,58 @@ public class ReimbursementFormPlugin extends AbstractFormPlugin implements Plugi
         QFilter nckd_orgamountFilter = new QFilter("costdept.number", QCP.equals, costdeptNumber);
         nckd_orgamountFilter.and("billstatus", QCP.equals, "E");
         nckd_orgamountFilter.and("creator.number",QCP.equals,creatorNumber);
-
         DynamicObject[] nckd_orgamountaccount = BusinessDataServiceHelper.
-                load(er_prepaybill, "id,number", new QFilter[]{nckd_orgamountFilter});
+                load(er_prepaybill, "id", new QFilter[]{nckd_orgamountFilter});
 
         for (int c=0;c<nckd_orgamountaccount.length;c++){
             //当前循环动因基础资料单头
             DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_orgamountaccount[c].getPkValue(), nckd_orgamountaccount[c].getDynamicObjectType().getName());
-
+            //单据编号
             String billno= dynamicObject.getString("billno");
             //循环分录
             for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("expenseentryentity")) {
-
                 //获取费用承担部门
                 DynamicObject entrycostdept = entryentity.getDynamicObject("entrycostdept");
-
                 //获取费用项目
                 DynamicObject expenseitem=entryentity.getDynamicObject("expenseitem");
-
                 //申请金额
                 BigDecimal expenseamount=entryentity.getBigDecimal("expenseamount");
-
-                //结算金额
-                BigDecimal exporiusedamount=entryentity.getBigDecimal("exporiusedamount");
-
+                //结算金额(借款余额)
+                BigDecimal exporiusedamount=entryentity.getBigDecimal("nckd_settleamount_et");
                 //未结算金额
-                BigDecimal orgiexpebalanceamount=entryentity.getBigDecimal("orgiexpebalanceamount");
-
+                BigDecimal orgiexpebalanceamount=entryentity.getBigDecimal("nckd_unsettleamount_et");
                 //备注
                 String remark=entryentity.getString("remark");
 
-                //新增动态单据分录
-                int rowIndex = this.getModel().createNewEntryRow(FORMID_ENTRY);
-                //赋值给新增分录
-                this.getModel().setValue("nckd_billno",billno,rowIndex);
-                this.getModel().setValue("nckd_entrycostdept",entrycostdept,rowIndex);
-                this.getModel().setValue("nckd_expenseitem",expenseitem,rowIndex);
-                this.getModel().setValue("nckd_expenseamount",expenseamount,rowIndex);
-                this.getModel().setValue("nckd_exporiusedamount",exporiusedamount,rowIndex);
-                this.getModel().setValue("nckd_unexporiusedamount",orgiexpebalanceamount,rowIndex);
-                this.getModel().setValue("nckd_remarke",remark,rowIndex);
-                //将选中的数据放到缓存中
-                JSONObject obj = new JSONObject();
-                //放入缓存
-                obj.put("nckd_billno",billno);
-                obj.put("nckd_entrycostdept",entrycostdept.getString("number"));
-                obj.put("nckd_expenseitem",expenseitem.getString("number"));
-                obj.put("nckd_expenseamount",expenseamount);
-                obj.put("nckd_exporiusedamount",exporiusedamount);
-                obj.put("nckd_unexporiusedamount",orgiexpebalanceamount);
-                obj.put("nckd_remark",remark);
-                resdate.add(obj);
+                Long id=entryentity.getLong("id");
+                //借款余额大于0
+//                if (exporiusedamount.compareTo(BigDecimal.ZERO)>0)
+//                {
+                    //新增动态单据分录
+                    int rowIndex = this.getModel().createNewEntryRow(FORMID_ENTRY);
+                    //赋值给新增分录
+                    this.getModel().setValue("nckd_bigintfield",id,rowIndex);
+                    this.getModel().setValue("nckd_billno",billno,rowIndex);
+                    this.getModel().setValue("nckd_entrycostdept",entrycostdept,rowIndex);
+                    this.getModel().setValue("nckd_expenseitem",expenseitem,rowIndex);
+                    this.getModel().setValue("nckd_expenseamount",expenseamount,rowIndex);
+                    this.getModel().setValue("nckd_exporiusedamount",exporiusedamount,rowIndex);
+                    this.getModel().setValue("nckd_unexporiusedamount",orgiexpebalanceamount,rowIndex);
+                    this.getModel().setValue("nckd_remarke",remark,rowIndex);
+                    //将选中的数据放到缓存中
+                    JSONObject obj = new JSONObject();
+                    //放入缓存
+                    obj.put("nckd_billno",billno);
+                    obj.put("nckd_entrycostdept",entrycostdept.getString("number"));
+                    obj.put("nckd_expenseitem",expenseitem.getString("number"));
+                    obj.put("nckd_expenseamount",expenseamount);
+                    obj.put("nckd_exporiusedamount",exporiusedamount);
+                    obj.put("nckd_unexporiusedamount",orgiexpebalanceamount);
+                    obj.put("nckd_remark",remark);
+                    obj.put("nckd_bigintfield",id);
+                    resdate.add(obj);
+//                }
+
             }
         }
         String pageId = this.getView().getPageId();
@@ -167,5 +169,4 @@ public class ReimbursementFormPlugin extends AbstractFormPlugin implements Plugi
     }
 
 
-
 }

+ 28 - 0
src/main/java/fi/em/formPlugin/TripreimBurseEditPlugin.java

@@ -1,6 +1,7 @@
 package fi.em.formPlugin;
 
 
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.exception.KDBizException;
 import kd.bos.form.CloseCallBack;
 import kd.bos.form.FormShowParameter;
@@ -8,7 +9,9 @@ import kd.bos.form.ShowType;
 import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.ClosedCallBackEvent;
 import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.sdk.plugin.Plugin;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -25,6 +28,7 @@ public class TripreimBurseEditPlugin extends AbstractListPlugin implements Plugi
     public static String nckd_agentparameterf1 = "nckd_agentparameterf1";//弹窗界面标识
     private static String bos_org = "bos_org"; //组织标识
     private static String er_expenseitemedit="er_expenseitemedit";//费用项目基础资料标识
+    private static String er_prepaybill = "er_prepaybill";//预付借款单标识
 
 
 
@@ -84,6 +88,8 @@ public class TripreimBurseEditPlugin extends AbstractListPlugin implements Plugi
                     String remark=reJo.getString("nckd_remark");
                     //借款单编号
                     String loanbillno=reJo.getString("nckd_billno");
+                    //id
+                    Long id=reJo.getLong("nckd_bigintfield");
                     //新增分录行
                     int rowIndex = this.getModel().createNewEntryRow("nckd_clearloanentry");
                     this.getModel().setValue("nckd_entrycostdept",nckd_entrycostdept,rowIndex);//费用承担部门
@@ -92,7 +98,29 @@ public class TripreimBurseEditPlugin extends AbstractListPlugin implements Plugi
                     this.getModel().setValue("nckd_exporiusedamount",exporiusedamount,rowIndex);//结算金额
                     this.getModel().setValue("nckd_unexporiusedamount",orgiexpebalanceamount,rowIndex);//未结算金额
                     this.getModel().setValue("nckd_remark",remark,rowIndex);//备注
+                    this.getModel().setValue("nckd_bigintfield",id,rowIndex);//id
                     this.getModel().setValue("nckd_billno",loanbillno,rowIndex);
+
+                    //反写预付借款单
+                    QFilter nckd_orgamountFilter = new QFilter("billno", QCP.equals, loanbillno);
+                    DynamicObject[] nckd_orgamountaccount = BusinessDataServiceHelper.
+                            load(er_prepaybill, "id,number", new QFilter[]{nckd_orgamountFilter});
+                    for (int j=0;j<nckd_orgamountaccount.length;j++) {
+                        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",exporiusedamount.subtract(orgiexpebalanceamount));
+                                SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
+                            }
+                        }
+                    }
+
+
                 }
                 //刷新分录
                 this.getView().updateView("nckd_clearloanentry");