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

二开案例.单据插件.切换单据类型

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

二开案例.单据插件.切换单据类型

【应用场景】

通过插件的方式,切换任意单据类型。


【案例演示】

采购订单,通过插件的方式切换单据类型。


【实现步骤】

<1>编写单据插件,代码如下。

using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【单据插件】切换单据类型
    /// </summary>
    [Description("【单据插件】切换单据类型"), HotUpdate]
    public class ChangeBillTypeAfterMainOrgChangedBillPlugIn : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey.EqualsIgnoreCase("test"))
            {
                // 获取下一个单据类型
                var billTypeField = this.View.BillBusinessInfo.GetBillTypeField();
                var enumList = billTypeField.BuildEnumList();
                var currentBillTypeValue = ((DynamicObject)this.Model.GetValue(billTypeField))[0].ToString();
                var index = 0;
                for (; index < enumList.Count; ++index)
                {
                    if (currentBillTypeValue == enumList[index].Value)
                    {
                        break;
                    }
                }
                var nextIndex = index >= enumList.Count - 1 ? 0 : index + 1;
                var nextBillTypeValue = enumList[nextIndex].Value;
                var nextBillType = billTypeField.BillTypeInfo.First(o => o["Id"].ToString() == nextBillTypeValue);
                var nextLayoutId = nextBillType["LayoutSolution_Id"].ToString();
                // 切换单据类型并刷新视图
                BillTypeChanged1(nextBillTypeValue, nextLayoutId);
                //BillTypeChanged2(billTypeField, nextBillTypeValue);
            }
        }
        #region 方案1
        /// <summary>
        /// 切换单据类型(通过ShowForm刷新视图)
        /// </summary>
        /// <param name="billTypeId"></param>
        /// <param name="layoutId"></param>
        private void BillTypeChanged1(string billTypeId, string layoutId)
        {
            var para = new BillShowParameter();
            this.CopyCustomeParameter(para);
            para.OpenStyle.ShowType = ShowType.InCurrentForm;
            para.FormId = this.View.OpenParameter.FormId;
            para.DefaultBillTypeId = billTypeId;
            para.LayoutId = layoutId;
            para.Status = this.View.OpenParameter.Status;
            para.PKey = null;
            para.ParentPageId = this.View.OpenParameter.ParentPageId;
            // PageId必须确保一致
            para.PageId = this.View.PageId;
            // 本view标记为已经失效,需要重新构建
            this.View.OpenParameter.IsOutOfTime = true;
            this.View.ShowForm(para);
        }
        /// <summary>
        /// 复制用户定制的属性
        /// </summary>
        /// <param name="para"></param>
        private void CopyCustomeParameter(BillShowParameter

二开案例.单据插件.切换单据类型

【应用场景】通过插件的方式,切换任意单据类型。【案例演示】采购订单,通过插件的方式切换单据类型。【实现步骤】<1>编写单据插件,代码...
点击下载文档文档为doc格式

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

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