소스 검색

```
feat(SettlebillFormPlugin): 实现自动核销功能并优化代码结构

移除未使用的导入类 PublicReimburseCusOpPlugin。 item删除空实现的Click 方法。
修复 switch-case 结构缺失的 break 语句问题。
新增 autoBill 方法用于处理主辅表数据的自动核销逻辑,
包括数据读取、金额反写及视图更新操作。调整代码格式,提升可读性。```

turborao 1 주 전
부모
커밋
95c3203bf5
1개의 변경된 파일40개의 추가작업 그리고 14개의 파일을 삭제
  1. 40 14
      code/fi/nckd-xtpoc-fi/src/main/java/nckd/xtpoc/fi/app/plugin/form/SettlebillFormPlugin.java

+ 40 - 14
code/fi/nckd-xtpoc-fi/src/main/java/nckd/xtpoc/fi/app/plugin/form/SettlebillFormPlugin.java

@@ -16,7 +16,6 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.sdk.plugin.Plugin;
-import nckd.xtpoc.fi.app.plugin.operate.PublicReimburseCusOpPlugin;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -63,16 +62,6 @@ public class SettlebillFormPlugin extends AbstractFormPlugin implements Plugin {
 
     }
 
-    @Override
-    public void itemClick(ItemClickEvent evt) {
-        super.itemClick(evt);
-        String itemkey = evt.getOperationKey();
-        if("settle".equals(itemkey)){
-            //evt.getParamsMap().get("selectedRow");
-
-        }
-    }
-
     @Override
     public void beforeBindData(EventObject e) {
         super.beforeBindData(e);
@@ -97,10 +86,11 @@ public class SettlebillFormPlugin extends AbstractFormPlugin implements Plugin {
         switch (key) {
             case "settle":
 
-            case "auto":
-
                 settleBill();
                 break;
+            case "auto":
+                autoBill();
+                break;
             case "refresh":
                 refreshBill();
                 break;
@@ -108,6 +98,42 @@ public class SettlebillFormPlugin extends AbstractFormPlugin implements Plugin {
         }
     }
 
+    public void  autoBill(){
+        DynamicObjectCollection entity = this.getModel().getEntryEntity(mainEntry);
+        for(DynamicObject dynamicObject : entity){
+            mainlist.add(dynamicObject);
+        }
+
+        DynamicObjectCollection assistEntity = this.getModel().getEntryEntity(assistEntry);
+        for(DynamicObject dynamicObject : assistEntity){
+            assistlist.add(dynamicObject);
+        }
+
+        writeOffMainAndAssistLists();
+
+        for(DynamicObject dynamicObject : entity){
+            for(DynamicObject mainBill : mainlist){
+                if(dynamicObject.get("nckd_fid").equals(mainBill.get("nckd_fid"))){
+                    dynamicObject.set("nckd_writeamount", mainBill.get("nckd_writeamount"));
+                }
+            }
+        }
+        for(DynamicObject dynamicObject : assistEntity){
+            for(DynamicObject assistBill : assistlist){
+                if(dynamicObject.get("nckd_fid1").equals(assistBill.get("nckd_fid1"))){
+                    dynamicObject.set("nckd_writeoffamount", assistBill.get("nckd_writeoffamount"));
+                }
+            }
+        }
+        /**
+         * 反写单据
+         */
+
+        this.getView().updateView(mainEntry);
+        this.getView().updateView(assistEntry);
+
+    }
+
     public void refreshBill(){
 
         this.getModel().deleteEntryData(mainEntry);
@@ -123,7 +149,7 @@ public class SettlebillFormPlugin extends AbstractFormPlugin implements Plugin {
         EntryGrid entryGrid = this.getControl(mainEntry);
         int[] selectRows = entryGrid.getSelectRows();
 
-        DynamicObjectCollection entity=this.getModel().getEntryEntity(mainEntry);
+        DynamicObjectCollection entity = this.getModel().getEntryEntity(mainEntry);
         if(selectRows!=null && selectRows.length>0){
             for(int selectRow :selectRows){
                 DynamicObject dynamicObject = entity.get(selectRow);  //获取选中行的单据体数据