电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

PLM二开·创建物料支持暂存功能

来源:金蝶云社区作者:金蝶2024-09-234

PLM二开·创建物料支持暂存功能

【应用场景】

增加【暂存】功能,创建PLM物料进行【暂存】时不校验必填字段是否填写,点击【保存】时才校验必填字段是否填写。


【注意事项】

  1. 需要增加【暂存】生命周期阶段,操作配置仅开启【保存】,【检出】,【检入】等操作,不允许暂存物料进行其他业务操作。

  2. 业务类型授权允许【修改】。

  3. 暂存状态物料,点击保存成功后,需将物料生命周期改为【提交】,才可进行后续的业务操作。


【案例演示】

增加PLM物料暂存功能


【实现步骤】

<1>新增【暂存】生命周期阶段


<2>物料生命周期模板新增【暂存】阶段,且设为第一个阶段。

<3>业务类型操作配置,修改操作按钮,可参考如下配置

<4>业务类型授权,勾选【修改】、【查看】权限

<5>BOS IDE扩展研发物料,增加【暂存】按钮

<6>继承标准的物料基础对象插件(MaterailBaseObjectBill),编写表单插件,参考代码如下。 

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Resource;

using Kingdee.BOS.Util;

using Kingdee.K3.PLM.Business.PlugIn;

using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Entity;

using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.IO;

using System.Linq;

namespace Kingdee.K3.PLM.STD.Business.PlugIn.BaseObjectPlugin

{

    [HotUpdate]

    [Description("物料暂存功能插件")]

    public class TemporarySaveBill : MaterailBaseObjectBill

    {

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            if (OperationRefused(e)) return;

            switch (e.BarItemKey.ToUpper())

            {

                case "TBTEMPORARYSAVE":

                    if (Convert.ToInt64(this.Model.DataObject["Id"]) == 0)

                    {

                        string code = (this.Model.DataObject["Code"] ?? "").ToString();

                        if (string.IsNullOrWhiteSpace(code) || code == "auto")

                        {

                            CodeRuleManager.Instance.GenerateCode(this.PLMContext, new DynamicObject[] { this.Model.DataObject });

                            code = (string)this.Model.DataObject["Code"];

                        }

                        if (!string.IsNullOrWhiteSpace(code))

                        {

                            if (CodeRuleModel.Instance.IsCodeExists(this.PLMContext, code, Convert.ToInt64(this.Model.DataObject["CategoryID_Id"])))

                            {

                                this.View.ShowWarnningMessage(string.Format(ResManager.LoadKDString("编码'{0}'已经存在!{1}", "120007000000168", SubSystemType.PLM), code, Convert.ToInt64(this.Model.DataObject["CategoryID_Id"])));

                                e.Cancel = true;

                            }

                        }

                    }

                    DomainObjectManager.Instance(PLMContext, Convert.ToInt64(this.Model.DataObject["CategoryID_Id"])).Save(PLMContext, this.Model.DataObject);

                    break;

            }

            base.BarItemClick(e);

        }  

        public override void AfterBindData(EventArgs e)

        {

            var items = this.View.LayoutInfo.GetFormAppearance().Menu.BarItems.Skip(1).ToList();

            foreach (var barItem in items)

            {

                if (barItem.Key == "tbTemporarySave")

                {

                    this.View.GetMainBarItem("tbTemporarySave").Visible = true;

                    this.View.GetMainBarItem("tbTemporarySave").Enabled = true;

                }

            }

           

            base.AfterBindData(e);

        }

        public override void AfterBarItemClick(AfterBarItemClickEventArgs e)

        {

            if (e.BarItemKey.ToUpper() == "TBTEMPORARYSAVE")

            {

                this.View.UpdateView();

            }

            base.AfterBarItemClick(e);

        }

    }

}


<7>编写接口类,实现保存成功后,物料生命周期改成【提交】状态。相关知识帖:二次开发扩展程序开发之插件模式中的相关扩展接口

PLM二开·创建物料支持暂存功能

【应用场景】增加【暂存】功能,创建PLM物料进行【暂存】时不校验必填字段是否填写,点击【保存】时才校验必填字段是否填写。【注意事项】...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信