凭证上私有型核算维度支持选择其它组织记录的二开方案原创
14人赞赏了该文章
402次浏览
编辑于2022年03月23日 17:46:53
星空是一个多组织架构下的ERP系统,有时候,用户希望在凭证录入中支持仓库核算维度选择其它组织的记录,并能正常保存。经过分析研究,由于仓库默认是私有型,目前标准产品无法直接支持这一需求,我们提供的二开方案如下:
一,二开一个新插件,当核算维度为仓库是,该插件自动替换原系统生成的查询条件为二开插件提供的过滤查询。这样可以在打开的仓库列表中选择到满足新的过滤条件的仓库。具体做法及步骤如下:
1,开发插件,具体新的过滤逻辑自己实现,生成相应的SQL语句的WHERE部分脚本,替换由官方插件生成的条件
public class YourClassName: AbstractDynamicFormPlugIn { /// 重写F7Select前执行事件 /// </summary> /// <param name="e">F7选择之前参数</param> public override void BeforeF7Select(BOS.Core.DynamicForm.PlugIn.Args.BeforeF7SelectEventArgs e) { base.BeforeF7Select(e); //判断是否选择核算维度,否则单据上一切F7都会调用这里 if (!e.FieldKey.StartsWith("$$")) { return; } ListShowParameter lstShowParameter = e.DynamicFormShowParameter as ListShowParameter; BaseDataField baseDataField = e.BaseDataField as BaseDataField; if (baseDataField == null) return; if (baseDataField.LookUpObject.FormId == Kingdee.K3.Core.SCM.SCMFormIdConst.BD_Stock) { //........ lstShowParameter.IsIsolationOrg=false; e.ListFilterParameter.Filter=....; } } }
2,注册插件:打开BOS IDE(或协同开发平台)找到“维度数据录入”,在其表单插件配置界面,注册上面开发好的插件。注意新插件一定要的官方插件之后,否则条件不会生效。
二,由于新选择的仓库非本组织可用的仓库,因此在凭证保存时会校验并提示此异常,导致凭证失败,为跳过此校验同时又不影响其它凭证,可以在凭证界面上额外增加一个“保存仓库”的菜单,修改”仓库“后,点此菜单来保存,从而绕开系统保存操作。具体方法如下:
1,打开BOS IDE(或协同开发平台),扩展”凭证“,在扩展后的凭证中,进入”操作列表“,
2,”新增“保存操作,注意操作代码和名称必须和原来的保存操作不同,如下图:
3,在“菜单集合”中添加一个新的“保存仓库”的菜单,并指定点击事件为“保存2”。如下图所示:
4,保存所有修改后,在前端操作,录入一张测试凭证,点“保存仓库”,应该能将当前凭证保存成功。
警告:该保存并未校验任何数据,因此仅在正常凭证修改了仓库数据后使用,且用户需要确保指定的新仓库正确。其它场景,应该使用系统“保存”菜单来完成。
为减少误操作的风险,可以设置“保存仓库”菜单的可见性为仅修改时。另:还可二开插件来从逻辑上控制,仅在修改了仓库维度的情况下,才允许点击。
希望上面的方法对您有所帮助。
赞 14
14人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!