凭证上私有型核算维度支持选择其它组织记录的二开方案原创
金蝶云社区-战斗的凯文
战斗的凯文
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(或协同开发平台)找到“维度数据录入”,在其表单插件配置界面,注册上面开发好的插件。注意新插件一定要的官方插件之后,否则条件不会生效。

image.png

    二,由于新选择的仓库非本组织可用的仓库,因此在凭证保存时会校验并提示此异常,导致凭证失败,为跳过此校验同时又不影响其它凭证,可以在凭证界面上额外增加一个“保存仓库”的菜单,修改”仓库“后,点此菜单来保存,从而绕开系统保存操作。具体方法如下:

    1,打开BOS IDE(或协同开发平台),扩展”凭证“,在扩展后的凭证中,进入”操作列表“,

image.png

    2,”新增“保存操作,注意操作代码和名称必须和原来的保存操作不同,如下图:

image.png

    3,在“菜单集合”中添加一个新的“保存仓库”的菜单,并指定点击事件为“保存2”。如下图所示:

image.png

    4,保存所有修改后,在前端操作,录入一张测试凭证,点“保存仓库”,应该能将当前凭证保存成功。

image.png

    警告:该保存并未校验任何数据,因此仅在正常凭证修改了仓库数据后使用,且用户需要确保指定的新仓库正确。其它场景,应该使用系统“保存”菜单来完成。
    为减少误操作的风险,可以设置“保存仓库”菜单的可见性为仅修改时。另:还可二开插件来从逻辑上控制,仅在修改了仓库维度的情况下,才允许点击。

image.png

    希望上面的方法对您有所帮助。




图标赞 14
14人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!