二开案例.单据插件.手动补号

【应用场景】
使用手动补号方式获取单据编号。
(优先计算补号,有补号时优先使用补号的编号,没有补号可用时,流水号+1生成新的单据编号)
【案例演示】
采购订单,演示单据编号字段和普通文本字段如何使用手动补号方式获取单据编号。

【实现步骤】
<1>编写单据插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.BusinessEntity.BillType;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ElementMetadata;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【单据插件】手动补号
/// </summary>
[Description("【单据插件】手动补号"), HotUpdate]
public class GetBillNoByRepairBillPlugIn : AbstractBillPlugIn
{
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
BindBillCodeRules();
}
/// <summary>
/// 主菜单点击事件
/// </summary>
/// <param name="e"></param>
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("GetBillNoByRepair_BillNoField"))
{
#region 给单据编号字段获取新的单据编号(优先手动补号)
var ruleId = GetCodeRuleByBillType();
var billNoField = this.View.BusinessInfo.GetBillNoField();
var sBillNo = BusinessDataServiceHelper.GetNextBillNoByRepair(this.Context
, this.View.BusinessInfo
, new[] { this.Model.DataObject }
, ruleId
, null);
this.Model.SetValue(billNoField.Key, sBillNo);
this.View.ShowMessage("获取到新的单据编号为:" + sBillNo);
return;
#endregion
}
if (e.BarItemKey.EqualsIgnoreCase("GetBillNoByRepair_TextField"))
{
#region 给指定的文本字段获取新的单据编号(优先手动补号)
// 一次性获取10个单据编号
var ruleId = this.Model.GetValue("F_Jac_Combo") as string;
if (string.IsNullOrWhiteSpace(ruleId))
{
this.View.ShowMessage("请选择编码规则!");
return;
}
var textField = this.View.BusinessInfo.GetField("F_Jac_Text");
var sBillNo = BusinessDataServiceHelper.GetNextBillNoByRepair(this.Context
, this.View.BusinessInfo
, new[] { this.Model.DataObject }
, ruleId
, null
, textField.Key // 用于存储编号的文本字段
, textField.Entity.TableName); // 文本字段所在表名
this.Model.SetValue(textField.Key, sBillNo);
this.View.ShowMessage("获取到新的单据编号为:" + sBillNo);
return;
#endregion
}
}
/// <summary>
/// 根据单据类型获取编码规则
/// </summary>
/// <returns></returns>
private string GetCodeRuleByBillType()
{
var ruleID = string.Empty;
var billNoFiled = this.View.BusinessInfo.GetBillNoField();
if (billNoFiled == null)
{
return ruleID;
}
var fields = this.View.BusinessInfo.GetFieldList();
//获取单据类型字段
var billForm = this.View.BusinessInfo.GetForm();
BillTypeField billTypeField = null;
if (billForm.ElementType == ElementType.ELEMENTTYPE_BILL)
{
billTypeField = fields.Find(p => p is BillTypeField) as BillTypeField;
}
if (billTypeField != null && billTypeField.BillTypeInfo.Count
二开案例.单据插件.手动补号
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



