• 固定资产处置申请单


    前言

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

  • 相关阅读:
    linux中断处理浅析
    linux页面回收浅析
    linux线程同步浅析
    剖析一个由sendfile引发的linux内核BUG
    比memcpy更快的内存拷贝
    linux内核SMP负载均衡浅析
    sscanf,snprintf
    mysql中实现longblob数据流式读写
    sscanf
    substr复制字符串的一部分
  • 原文地址:https://www.cnblogs.com/lyc-smile/p/7495566.html
Copyright © 2020-2023  润新知