1、费用报销单;2、差旅报销单;3、对公报销单;4、预付单
增加科目分类字段,按费用与科目分类进行过滤可选的科目分类
This commit is contained in:
parent
f350619bea
commit
567273b4d9
|
@ -0,0 +1,153 @@
|
|||
package zcgj.zcdev.zcdev.fs.plugin.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.RefBillEdit;
|
||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
import kd.bos.mvc.bill.BillView;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 1、费用报销单;2、差旅报销单;3、对公报销单;4、预付单
|
||||
* 科目分类通用插件
|
||||
*/
|
||||
public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||
|
||||
/**
|
||||
* 发票分录超链接跳转到详情
|
||||
*/
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
Object company = this.getModel().getValue("costcompany");//核算组织(费用承担公司)
|
||||
if(company!=null){
|
||||
//String yzCompanyNumber ="10006475"; //兖州中材建设有限公司
|
||||
DynamicObject companyObj = (DynamicObject)company;
|
||||
Long companyId = companyObj.getLong("id");
|
||||
if(OrgCheckUtils.isKS(companyId)){
|
||||
//仅针对矿山下组织下的逻辑
|
||||
BasedataEdit accounttype = this.getControl("zcgj_accounttype"); //科目分类
|
||||
if(accounttype != null) {
|
||||
accounttype.addBeforeF7SelectListener(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
|
||||
Object company = this.getModel().getValue("costcompany");//核算组织(费用承担公司)
|
||||
String name = beforeF7SelectEvent.getProperty().getName();
|
||||
String billFormId = ((BillView) this.getView()).getFormId();//单据标识
|
||||
if(company!=null){
|
||||
//String yzCompanyNumber ="10006475"; //兖州中材建设有限公司
|
||||
DynamicObject companyObj = (DynamicObject)company;
|
||||
Long companyId = companyObj.getLong("id");
|
||||
if(OrgCheckUtils.isKS(companyId)){
|
||||
//仅针对矿山下组织下的逻辑
|
||||
if(name.equals("zcgj_accounttype")){ //科目分类根据科目分类基础资料过滤
|
||||
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", new QFilter[]{filter,biztypefilter});
|
||||
List<String> numbers = new ArrayList<>();
|
||||
if(accountfeeEntries!=null){
|
||||
for (DynamicObject dynamicObject : accountfeeEntries) {
|
||||
String zcgjAccounttypeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_accounttype.number");
|
||||
if(zcgjAccounttypeNumber!=null){
|
||||
numbers.add(zcgjAccounttypeNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QFilter qFilter = new QFilter("number", QCP.in, numbers);
|
||||
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||
showParameter.getListFilterParameter().getQFilters().add(qFilter);
|
||||
}else{
|
||||
this.getView().showErrorNotification("请选择费用项目!");
|
||||
beforeF7SelectEvent.setCancel(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
String name = e.getProperty().getName();
|
||||
ChangeData changeData = e.getChangeSet()[0];
|
||||
String billFormId = ((BillView) this.getView()).getFormId();//单据标识
|
||||
Object company = this.getModel().getValue("costcompany");//核算组织(费用承担公司)
|
||||
if(company!=null){
|
||||
//String yzCompanyNumber ="10006475"; //兖州中材建设有限公司
|
||||
DynamicObject companyObj = (DynamicObject)company;
|
||||
Long companyId = companyObj.getLong("id");
|
||||
if(OrgCheckUtils.isKS(companyId)){
|
||||
//仅针对矿山下组织下的逻辑
|
||||
if(StringUtils.equals(name, "expenseitem")){ //费用项目发生改变时,清空科目分类
|
||||
int rowIndex = changeData.getRowIndex();
|
||||
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity");
|
||||
if(dynamicObjectCollection!=null){
|
||||
DynamicObject zcgjExpenseitem = dynamicObjectCollection.get(rowIndex).getDynamicObject("expenseitem");
|
||||
QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee",QCP.equals,zcgjExpenseitem.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", new QFilter[]{filter,biztypefilter});
|
||||
if(accountfeeEntries!=null && accountfeeEntries.size()==1){
|
||||
long id = accountfeeEntries.get(0).getLong("zcgj_entryentity.zcgj_accounttype");
|
||||
this.getModel().setValue("zcgj_accounttype",id,rowIndex);
|
||||
}else{
|
||||
this.getModel().setValue("zcgj_accounttype",null,rowIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue