企业成本核算添加成本项下拉列表过滤逻辑

This commit is contained in:
xuhaihui 2025-12-05 13:41:48 +08:00
parent 4f7256b80f
commit 236b5f7abf
1 changed files with 94 additions and 4 deletions

View File

@ -42,21 +42,65 @@ import java.util.*;
* 企业成本核算表单插件 * 企业成本核算表单插件
* 说明1点击自动取数按钮获取核算余额表 * 说明1点击自动取数按钮获取核算余额表
* 2子分录成本分解结构跟随父分录成本分解结构赋值 * 2子分录成本分解结构跟随父分录成本分解结构赋值
* 3子分录成本分解结构过滤逻辑 * 3子分录成本分解结构和二级分类和项目过滤逻辑
* 4二级分类过滤逻辑 * 4成本项下拉列表过滤
* 工序即为成本分解结构 * 工序即为成本分解结构
*/ */
public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener, Plugin { public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener, Plugin {
@Override @Override
public void registerListener(EventObject e) { public void registerListener(EventObject e) {
super.registerListener(e); super.registerListener(e);
BasedataEdit cbs = (BasedataEdit) this.getControl("zcgj_cbs"); BasedataEdit cbs = (BasedataEdit) this.getControl("zcgj_cbs");//成本分解结构
cbs.addBeforeF7SelectListener(this); cbs.addBeforeF7SelectListener(this);
BasedataEdit zcgj_sectypef7 = (BasedataEdit) this.getControl("zcgj_sectypef7"); BasedataEdit zcgj_sectypef7 = (BasedataEdit) this.getControl("zcgj_sectypef7");//二级分类
zcgj_sectypef7.addBeforeF7SelectListener(this); zcgj_sectypef7.addBeforeF7SelectListener(this);
BasedataEdit project = (BasedataEdit) this.getControl("project");//项目
project.addBeforeF7SelectListener(this);
this.addItemClickListeners("advcontoolbarap"); this.addItemClickListeners("advcontoolbarap");
} }
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
DynamicObject period = (DynamicObject) this.getModel().getValue("period");//期间
if (period != null) {
Date enddate = period.getDate("enddate");//结束日期
Calendar cal = Calendar.getInstance();
cal.set(2025, Calendar.NOVEMBER, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date threshold = cal.getTime();
if (enddate != null && enddate.before(threshold)) {
setCostItemList(true);
} else {
setCostItemList(false);
}
} else {
setCostItemList(false);
}
}
@Override
public void afterBindData(EventObject e) {
super.afterBindData(e);
DynamicObject period = (DynamicObject) this.getModel().getValue("period");//期间
if (period != null) {
Date enddate = period.getDate("enddate");//结束日期
Calendar cal = Calendar.getInstance();
cal.set(2025, Calendar.NOVEMBER, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date threshold = cal.getTime();
if (enddate != null && enddate.before(threshold)) {
setCostItemList(true);
} else {
setCostItemList(false);
}
} else {
setCostItemList(false);
}
}
@Override @Override
public void propertyChanged(PropertyChangedArgs e) { public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e); super.propertyChanged(e);
@ -81,6 +125,29 @@ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements Before
if (newValue == null || !newValue.equals(oldValue)) { if (newValue == null || !newValue.equals(oldValue)) {
this.getModel().setValue("zcgj_sectypef7", null, rowIndex);//二级分类 this.getModel().setValue("zcgj_sectypef7", null, rowIndex);//二级分类
} }
} else if ("period".equals(key)) {
//期间
this.getModel().deleteEntryData("entryentity");
this.getModel().deleteEntryData("zcgj_subentryentity");
ChangeData[] changeSet = e.getChangeSet();
ChangeData changeData = changeSet[0];
DynamicObject period = (DynamicObject) changeData.getNewValue();//新值
if (period != null) {
Date enddate = period.getDate("enddate");//结束日期
Calendar cal = Calendar.getInstance();
cal.set(2025, Calendar.NOVEMBER, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date threshold = cal.getTime();
if (enddate != null && enddate.before(threshold)) {
setCostItemList(true);
} else {
setCostItemList(false);
}
} else {
setCostItemList(false);
}
} }
} }
@ -116,6 +183,12 @@ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements Before
return; return;
} }
parameter.getListFilterParameter().setQFilters(qFilter); parameter.getListFilterParameter().setQFilters(qFilter);
} else if (StringUtils.equals(name, "project")) {
//项目
List<QFilter> qFilter = new ArrayList<>();
DynamicObject org = (DynamicObject) this.getModel().getValue("org");//所属组织
qFilter.add(new QFilter("projectorg", QCP.equals, org.getPkValue()));
parameter.getListFilterParameter().setQFilters(qFilter);
} }
} }
@ -162,6 +235,23 @@ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements Before
} }
} }
private void setCostItemList(boolean isHistoryData) {
ComboEdit comboEdit = this.getControl("costtype");
List<ComboItem> data = new ArrayList<>();
data.add(new ComboItem(new LocaleString("人工成本"), "10."));
if (isHistoryData) {
data.add(new ComboItem(new LocaleString("材料成本"), "20."));
data.add(new ComboItem(new LocaleString("机械设备"), "30."));
data.add(new ComboItem(new LocaleString("合同成本"), "40."));
}
data.add(new ComboItem(new LocaleString("安全支出"), "60."));
data.add(new ComboItem(new LocaleString("期间费用"), "70."));
data.add(new ComboItem(new LocaleString("税金及附加"), "80."));
data.add(new ComboItem(new LocaleString("财务费用"), "90."));
data.add(new ComboItem(new LocaleString("研发支出"), "100."));
comboEdit.setComboItems(data);
}
/** /**
* 自动取数处理方法 * 自动取数处理方法
*/ */