固定資產處置申請單


前言

  之前的文章中,已經介紹過固定資產源碼的研究。這次要說的呢,就是基於上次的源碼研究,做的固定資產處置申請單。剛開始的需求呢是說,簡單的做個固定資產清理單仿照着系統標准產品的清理單,主要目的就是為了脫離固定資產清理業務系統。但是,這么簡單的需求,又怎么可能呢?於是乎!客戶又提出了,這個申請單要走工作流,單據上還有明細項的凈值和原值的合計。單據編號呢還要符合編碼規則自動生成。而且最最重要的是:這個申請單要能夠進行BOTP單據轉換,下推生成固定資產清理單!無不在印證着一句真理:穩定的需求是軟件開發中的聖杯!(神聖的聖杯的背后就是意味着很難得到!)既然需求出來了,逃避不了,那就理清邏輯思路,規划實現流程。擼起袖子就是干!Just do it !

思維導圖Xmind:http://pan.baidu.com/s/1c1C9fpQ

處理分錄中去掉原有自動生成的按鈕 新增分錄 插入分錄 刪除分錄

  在 EditUI.java 中的 onShow()中添加如下代碼即可去掉 DetailPanle 生成的上述三個按鈕:

 1 /*
 2          * 去掉 分錄中的自帶的按鈕(新增分錄 插入分錄 刪除分錄)
 3          */
 4         Component c = getDetailTable().getParent().getParent();
 5         if (c instanceof DetailPanel) {
 6             DetailPanel panel = (DetailPanel) c;
 7             // 獲取btn
 8             Component[] components = panel.getComponents();
 9             for (int i = 0; i < components.length; i++) {
10                 Component component = components[i];
11                 if (component instanceof KDPanel) {
12                     KDPanel kdPanel = (KDPanel) component;
13                     if ("controlPanel".equals(kdPanel.getName())) {
14                         panel.remove(kdPanel);
15                     }
16                 }
17             }
18         }

  

審核時鎖定單據 不允許修改單據 點擊反審核以后 才可以修改單據

  在審核按鈕上 控制單據鎖定  反審核按鈕方法中 解除單據鎖定

 1     @Override
 2     public void actionAudit_actionPerformed(ActionEvent e) throws Exception {
 3         super.actionAudit_actionPerformed(e);
 4         this.btnEdit.setEnabled(false);
 5         this.btnAudit.setEnabled(false);
 6         this.btnUnAudit.setEnabled(true);
 7         this.prmtAuditor.setText(SysContext.getSysContext().getCurrentUserInfo().getName());
 8     
 9         // 鎖定單據 不允許編輯
10         super.lockUIForViewStatus();
11     }
 1 @Override
 2     public void actionUnAudit_actionPerformed(ActionEvent e) throws Exception {
 3         // TODO Auto-generated method stub
 4         super.actionUnAudit_actionPerformed(e);
 5         this.btnEdit.setEnabled(true);
 6         this.btnAudit.setEnabled(true);
 7         this.btnUnAudit.setEnabled(false);
 8         // 解除單據鎖定 允許編輯
 9         super.unLockUI();
10     }

分錄計算某列合計值賦值給指定 合計字段

  遍歷分錄中的所有行,將指定列的值進行累加 得出的合計值 賦值給 合計字段

  注意:有一個注意的點,在刪除分錄方法中,要重新調用 統計合計值方法。

 1 /**
 2      * 
 3      * <p>
 4      * Title: calcTotalAmount
 5      * </p>
 6      * <p>
 7      * Description:
 8      * </p>
 9      * 計算清理單賬面的 原值以及凈值合計
10      */
11     private void totalAmount() {
12         BigDecimal clrAssetValue = ZERO;
13         BigDecimal clrNeatValue = ZERO;
14         BigDecimal clrAccuDepr = ZERO;
15         for (int i = 0; i < getDetailTable().getRowCount(); ++i) {
16             IRow row = getDetailTable().getRow(i);
17             BigDecimal cellAssetValue = (row.getCell("emValue").getValue() == null) ? ZERO
18                     : (BigDecimal) row.getCell("emValue").getValue();
19             BigDecimal cellInitEvalValue = (row.getCell("emNetValue")
20                     .getValue() == null) ? ZERO : (BigDecimal) row.getCell(
21                     "emNetValue").getValue();
22 
23             clrAssetValue = clrAssetValue.add(cellAssetValue);
24             clrNeatValue = clrNeatValue.add(cellInitEvalValue);
25 
26         }
27         // 原值合計
28         this.assetValueTotal.setValue(clrAssetValue);
29         // 凈值合計
30         this.neatValueTotal.setValue(clrNeatValue);
31         /*
32          * this.txtAssetValue.setText(FaClientUtils.formatDecimal(clrAssetValue,
33          * this.currencyScale));
34          * this.txtNeatValue.setText(FaClientUtils.formatDecimal(clrNeatValue,
35          * this.currencyScale));
36          */
37     }
38 
39         /
40      * 獲取分錄 kdtEntrys
41      * 
42      * @return kdtEntrys
43      * @see com.kingdee.eas.custom.fixedassetclean.client.AbstractFaClearEditUI#getDetailTable()
44      */
45     protected KDTable getDetailTable() {
46         return this.kdtEntrys;
47     }    

 

編碼規則

  編碼規則這部分,每個單據都會有一個單據編號。有兩種方式來生成單據編號:一種是在代碼中進行控制,頁面初始化時 就給單據編號進行初始化賦值;一種是使用EAS中的編碼規則 選中單據進行設置編碼規則即可。

單據轉換(BOTP)

  單據轉換也是利用EAS中的單據轉換進行配置。其中需要注意的是,轉換的目標單據分錄中 每個屬性都要支持 isForMapping = true (是否支持單據屬性映射) 。這里有個小插曲就是,申請單轉換清理單的時候,分錄配置的時候看不到內容。原因就是因為 清理單 的 屬性isForMapping 默認是false 。一直以為是我自定義的單據配置的有問題,浪費了很多精力。不懂規則,就是在做無用功!如果在BOTP里的EAS系統樹種看不到自定義的單據,需要配置 子系統樹配置文件,停掉EAS應用服務器,然后重新生成子系統樹。(在思維導圖圖片中已經有提及介紹,這里不再贅述。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM