1、首先定义一个参照类
package nc.pub.jzcm.ref;
import nc.ui.bd.ref.AbstractRefModel;
import nc.ui.bd.ref.IRefDocEdit;
import nc.ui.bd.ref.IRefMaintenanceHandler;
public class PMPrPayDefaultRefModel extends AbstractRefModel {
public PMPrPayDefaultRefModel(){
reset();
}
@Override
public void reset() {
setFieldCode(new String[] { "t.vbillcode","b.name","t.norigpaytotalmny", "d.accname", "t.vmemo"});
setFieldName(new String[] {"单据编号","供应商","付款金额","付款银行账号","备注"});
setDefaultFieldCount(5);
setHiddenFieldCode(new String[] { "t.pk_pay","t.pk_supplier","t.pk_bankaccbas","c.pk_bankaccbas" });
setPkFieldCode("t.pk_pay" );
setRefTitle("PM付款单档案");
setRefCodeField("b.name");
setRefNameField("b.name");
setTableName(" jzpr_pay t left join bd_supplier b on b.pk_supplier = t.pk_supplier left join bd_bankaccuse c on c.pk_bankaccsub = t.pk_bankaccbas left join bd_bankaccbas d on d.pk_bankaccbas = c.pk_bankaccbas ");
resetFieldName();
setAddEnableStateWherePart(false);
setRefMaintenanceHandler(new IRefMaintenanceHandler() {
public String[] getFucCodes() {
return new String[] { "10120USRM" };
}
public IRefDocEdit getRefDocEdit() {
return null;
}
});
setWherePart(" c.pk_org='"+getPk_org()+"' and t.vdef2='PM' and t.dr='0'");
setMaintainButtonEnabled(false);
}
}
(以下以收款单自定义项12为例)
2、在收款单表头该字段上定义编辑前事件,获取财务组织,并赋值到参照的过滤条件上
if ("vdef12".equals(e.getKey())) {
String pk_org = (String) e.getBillCardPanel().getHeadItem("pk_org") .getValueObject();
if ((pk_org == null) || (pk_org.length() == 0)) {
e.setReturnValue(Boolean.valueOf(false));
return;
}
BillItem item = e.getBillCardPanel().getHeadItem("vdef12");
UIRefPane refPane = (UIRefPane) item.getComponent();
refPane.getRefModel().setPk_org(pk_org);
}
3、在单据模板初始化中把对应字段设置为自定义参照
参照类名为刚才定义的类名nc.pub.jzcm.ref.PMPrPayDefaultRefModel
4、展示