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

【应用场景】
通过插件的方式,切换任意单据类型。
【案例演示】
采购订单,通过插件的方式切换单据类型。

【实现步骤】
<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格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



