diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java index 06c67c6..0fe7c82 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java @@ -46,6 +46,12 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implemen if(accounttype != null) { accounttype.addBeforeF7SelectListener(this); } + + //仅针对矿山下组织下的逻辑 + BasedataEdit expenseitem = this.getControl("expenseitem"); //科目分类 + if(expenseitem != null) { + expenseitem.addBeforeF7SelectListener(this); + } } } } @@ -102,6 +108,41 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implemen } + }else if("expenseitem".equals(name)){//费用项目增加过滤 + int row = beforeF7SelectEvent.getRow(); + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity"); + if(dynamicObjectCollection!=null){ + DynamicObject expenseitem = dynamicObjectCollection.get(row).getDynamicObject("expenseitem"); + if(expenseitem!=null){ + // QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee", QCP.equals,expenseitem.getLong("id")); + String typeKey = "20"; //差旅报销单 + if("er_dailyreimbursebill".equals(billFormId)){ //费用报销单 + typeKey = "30"; //差旅报销单 + }else if("er_publicreimbursebill".equals(billFormId)){ //对公报销单 + typeKey = "40"; //差旅报销单 + }else if("er_prepaybill".equals(billFormId)){ //预付单 + typeKey = "50"; //差旅报销单 + } + QFilter biztypefilter = new QFilter("zcgj_biztype",QCP.equals,typeKey); //过滤业务单据为支出财务确认单 + //分录过滤 + //使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据 + //使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行,不含其他行数据 + DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee", "zcgj_entryentity.zcgj_accounttype.number," + + "zcgj_entryentity.zcgj_fee.number", new QFilter[]{biztypefilter}); + List numbers = new ArrayList<>(); + if(accountfeeEntries!=null){ + for (DynamicObject dynamicObject : accountfeeEntries) { + String zcgjFeeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_fee.number"); + if(zcgjFeeNumber!=null){ + numbers.add(zcgjFeeNumber); + } + } + } + QFilter qFilter = new QFilter("number", QCP.in, numbers); + ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + showParameter.getListFilterParameter().getQFilters().add(qFilter); + } + } } } }