操作插件示例代码(3)

2019-02-21 00:46

公共属性

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 lstBillID = newList(); List billIdList = newList();

List dataEntitys = newList();

foreach (var item in e.DataEntitys) {

lstBillID.Add(Convert.ToInt64(item[\])); }

//以下是处理如果生成的凭证未做任何处理则反审核时删除凭证。

var service = BD.Contracts.ServiceFactory.GetLocalService(); IEnumerable lstBizBillInfor =

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; } 备注

上下文对象,包含了数据库连接信息,在调用各种读取数据库的接口函数时,需用本对象作为参数。


操作插件示例代码(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:软件科技有限责任公司企业计划书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: