二开单据编码不允许断号实现
金蝶云社区-时空蔷薇
时空蔷薇
1人赞赏了该文章 1056次浏览 未经作者许可,禁止转载编辑于2019年12月28日 12:59:58
1) 规则定义设置“不允许断号”,在*EditUI(GUI客户端编辑页面)保存方法调用编码规则接口生成编码。
publicvoid actionSave_actionPerformed(ActionEvent e) throws Exception { if(this.editData.getNumber() == null) { SysContextsysContext = SysContext.getSysContext(); if(sysContext.getCurrentOrgUnit() != null) { StringcompanyID = sysContext.getCurrentOrgUnit().getString("id");
ICodingRuleManageriCodingRuleManager = CodingRuleManagerFactory .getRemoteInstance(); if(iCodingRuleManager.isExist(this.editData, companyID)) { this.editData.setNumber(iCodingRuleManager.getNumber(this.editData,companyID)); this.txtNumber.setText(this.editData.getNumber()); } this.oldData= this.editData; } } super.actionSave_actionPerformed(e); }或者在*ControllerBean(GUI、web)重写_save方法调用编码规则接口生成编码。2) 在*EditUI重写setAutoNumberByOrg方法,根据编码规则状态,可以设置是否支持修改、调用readNumber方法获取临时编码可以实现启用“新增显示且不允许断号”时新增显示。protected void setAutoNumberByOrg(String orgType) { try { String companyID = null; if ((!(StringUtils.isEmpty(orgType))) &&(!("NONE".equalsIgnoreCase(orgType))) &&(SysContext.getSysContext().getCurrentOrgUnit(OrgType.getEnum(orgType)) !=null)) { companyID =SysContext.getSysContext().getCurrentOrgUnit(OrgType.getEnum(orgType)).getString("id"); } else if (SysContext.getSysContext().getCurrentOrgUnit()!= null) { companyID = SysContext.getSysContext().getCurrentOrgUnit().getString("id"); }
boolean isCUAttributeExist = false; if (this.editData.getCU() != null) isCUAttributeExist = true; else { this.editData.setCU((CtrlUnitInfo)SysContext.getSysContext().getCurrentOrgUnit(OrgType.ControlUnit)); }
ICodingRuleManager iCodingRuleManager =CodingRuleManagerFactory.getRemoteInstance(); if (iCodingRuleManager.isExist(this.editData, companyID)){ if ((this.editData.getNumber() == null) &&(iCodingRuleManager.isAddView(this.editData, companyID))){ this.editData.setNumber(iCodingRuleManager.getNumber(this.editData,companyID)); } this.txtNumber.setEnabled(false);
RuleStatus rs = iCodingRuleManager.getRuleStatus(this.editData,companyID); if ((rs != null) &&(rs.isModifiable())) { this.txtNumber.setEnabled(true); } } if (!(isCUAttributeExist)) { this.editData.setCU(null); }
if ((this.editData.getNumber() != null) &&(this.editData.getNumber().trim().length() > 0)) this.txtNumber.setText(this.editData.getNumber()); } catch (Exception e){ handUIException(e); this.oldData = this.editData; SysUtil.abort(); } }
3) 在*ControllerBean回收编码
protectedvoid _delete(Context ctx, IObjectPK pk) throws BOSException, EASBizException{ PurRequisitionOrderInfoinfo = PurRequisitionOrderFactory.getLocalInstance(ctx).getPurRequisitionOrderInfo(pk); Stringnumber = info.getNumber();
//删除单据后,当前单据编码需要回收,调用回收接口 super._delete(ctx,pk); ICodingRuleManager iCodingRuleManager =CodingRuleManagerFactory.getLocalInstance(ctx); iCodingRuleManager.recycleNumber(info,sysContext.getCurrentOrgUnit().getString("id"), number); }