差旅报销单差旅项目过滤开发原创
金蝶云社区-derekyu
derekyu
2人赞赏了该文章 330次浏览 未经作者许可,禁止转载编辑于2023年03月07日 16:07:47

差旅报销单上的行程信息比较特殊,行程信息里面的差旅项目过滤无法通过在差旅报销单上的beforeF7Select方法中实现(不会进入beforeF7Select方法),更无法通过开发平台的基础数据过滤条件来配置实现过滤。所以只能通过插件开发实现,且只能在差旅项目基础资料上挂插件实现。

列表过滤:

@Override
public void setFilter(SetFilterEvent e) {
    super.setFilter(e);
    IFormView parentView = this.getView().getParentView();
    if(parentView != null){
        String parentFormId = parentView.getFormShowParameter().getFormId();
        if("er_tripreimbursebill".equals(parentFormId)){
            e.addCustomQFilter(new QFilter("number",QCP.not_equals,"004"));
        }
    }
}

编辑页面过滤:

@Override
public void beforeBindData(EventObject e) {
    super.beforeBindData(e);

    IFormView parentView = this.getView().getParentView();
    String parentFormId = parentView.getFormShowParameter().getFormId();
    if("er_tripreimbursebill".equals(parentFormId)){
        //差旅报销单
        boolean isOverseas = (boolean) parentView.getModel().getValue("kdcd_abroad");
        if(!isOverseas){
            DynamicObject dataEntity = this.getModel().getDataEntity(true);
            DynamicObjectCollection datas = (DynamicObjectCollection) dataEntity.get(0);
            for(int i = datas.size() - 1; i >= 0; i --){
                DynamicObject data = datas.get(i);
                if("004".equals(((DynamicObject)data.get("expenseitem")).get("number"))){
                    datas.remove(i);
                    break;
                }
            }
        }
    }
}

  


赞 2