公共属性
BusinessInfo
单据元数据对象。
语法
属性定义 C# publicBusinessInfo BusinessInfo { get; privateset; } 备注
可以通过此属性对象,获取单据的各种属性配置,以及所含单据体、字段信息。
对于一些公用类的操作插件,不能预先知道将要被应用到那种单据、那种操作上,此时从BusinessInfo对象中获取必要的信息就很重要。
案例–单据已经生成凭证则禁止反审核
代码来源
Kingdee.K3.SCM.App.ServicePlugIn.VoucherControl.UnAuditVoucherControl
需求背景
供应链单据,已经生成凭证,且凭证进行了更改、审核,则禁止反审核单据;如果生成的凭证没有变化,则同步删除凭证;
实现方案
提供一个供应链反审核通用插件,为全部单据服务,BusinessInfo中的单据FormId属性,作为最关键的参数传递。
在操作前,调用一个通用的校验器,判断单据是否已经生成凭证,该校验器要求传入当前单据的FormId,此信息需要到BusinessInfo属性中获取;
在标准反审核操作前(事务内),调用一个通用服务,同步删除凭证,此服务要求传入单据FormId以及单据Fid。
关键字
单据FormId
示例代码
C#
using System.Text;
using System.ComponentModel;
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Validation; using Kingdee.K3.Core.FIN; using Kingdee.BOS.Core;
using Kingdee.K3.SCM.App.Validator; using Kingdee.K3.BD.Contracts.FIN; using Kingdee.BOS.Orm.DataEntity;
namespace Kingdee.K3.SCM.App.ServicePlugIn.VoucherControl {
[Description(\反审核插件,处理和凭证有关\)]
publicclassUnAuditVoucherControl: AbstractOperationServicePlugIn {
publicoverridevoid OnAddValidators(AddValidatorsEventArgs e) {
//添加凭证检查校验器:如果已经生成凭证且凭证已经更改或审核则单据不允许反审核 HasVoucherValidator voucherValidator = newHasVoucherValidator(); voucherValidator.EntityKey = \;
voucherValidator.BillFormId = this.BusinessInfo.GetForm().Id; e.Validators.Add(voucherValidator); }
publicoverridevoid BeginOperationTransaction(BeginOperationTransactionArgs e) {
if (e.DataEntitys.Count() < 1) { return; }
string formId = this.BusinessInfo.GetForm().Id; List
List
foreach (var item in e.DataEntitys) {
lstBillID.Add(Convert.ToInt64(item[\])); }
//以下是处理如果生成的凭证未做任何处理则反审核时删除凭证。
var service = BD.Contracts.ServiceFactory.GetLocalService
service.GetBizBillVoucherInfor(this.Context, formId, lstBillID);
DynamicObject obj;
foreach (var bizBillInfor in lstBizBillInfor) {
if (bizBillInfor.CanUnAudit) {
long pkId = bizBillInfor.BillPKID; billIdList.Add(pkId);
obj = (from p in e.DataEntitys whereConvert.ToInt64(p[\]) == pkId select p).FirstOrDefault();
dataEntitys.Add(obj); } }
if (billIdList.Count > 0) {
service.DeleteBizBillBizVoucher(this.Context, formId, billIdList); }
e.DataEntitys = dataEntitys.ToArray(); } } }
Context
上下文对象;
语法
属性定义 C# publicContext Context { get; privateset; } 备注
上下文对象,包含了数据库连接信息,在调用各种读取数据库的接口函数时,需用本对象作为参数。