固定资产处置申请单

前言

  之前的文章中,已经介绍过固定资产源码的研究。这次要说的呢,就是基于上次的源码研究,做的固定资产处置申请单。刚开始的需求呢是说,简单的做个固定资产清理单仿照着系统标准产品的清理单,主要目的就是为了脱离固定资产清理业务系统。但是,这么简单的需求,又怎么可能呢?于是乎!客户又提出了,这个申请单要走工作流,单据上还有明细项的净值和原值的合计。单据编号呢还要符合编码规则自动生成。而且最最重要的是:这个申请单要能够进行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应用服务器,然后重新生成子系统树。(在思维导图图片中已经有提及介绍,这里不再赘述。)

posted @ 2017-09-08 17:17  蚂蚁分享圈  阅读(3746)  评论(0编辑  收藏  举报