77范文网 - 专业文章范例文档资料分享平台

操作插件示例代码(8)

来源:网络收集 时间:2019-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

需求背景

业务单据已经生成凭证后,不允许反审核。

实现方案

建立一个通用的检查规则–单据是否生成凭证检查,在各个插件中引用此检查。

是否生成凭证检查规则,发现单据已经生成凭证之后,添加一个校验错误到操作错误列表,通知操作剔除此条数据不允许操作。

关键字

操作数据校验校验规则生成凭证检查剔除校验不通过数据 示例代码 C#

using System;

using System.Collections.Generic; using System.Linq; 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(); } } }

C#

using System;

using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Enums; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Validation; using Kingdee.BOS;

using Kingdee.K3.SCM.Contracts; using Kingdee.BOS.Orm.DataEntity; using Kingdee.K3.Core.SCM; using Kingdee.K3.Core.FIN;

using Kingdee.K3.BD.Contracts.FIN; using Kingdee.BOS.Util; using Kingdee.BOS.Core;

namespace Kingdee.K3.SCM.App.Validator {

///

///检查单据是否生成了凭证,如果生成了凭证则不允许反审核 ///

publicclassHasVoucherValidator : AbstractServiceValidator {

///

///当前单据的formid ///

publicstring BillFormId { get; set; }

///

///校验 ///

///

publicoverridevoid Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) {

if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0) { return; }

base.Validate(dataEntities, validateContext, ctx);

List lstBillID = newList(); foreach (var item in dataEntities) {

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

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

IEnumerable lstBizBillInfor = service.GetBizBillVoucherInfor( this.Context, this.BillFormId, lstBillID);

foreach (var bizBillInfor in lstBizBillInfor) {

////单据已经生成凭证,则凭证已经操作过则不可以反审核 if (!bizBillInfor.CanUnAudit) {

long pkId = bizBillInfor.BillPKID;

ExtendedDataEntity item = GetDataEntity(dataEntities, pkId);

string msg = string.Format(\单据“{0}”已生成凭证,不允许反审核!\, item.BillNo.ToString()); var errInfo = newValidationErrorInfo(

item.BillNo,

item.DataEntity[\].ToString(), item.DataEntityIndex, item.RowIndex, \,

msg, \,

BOS.Core.Validation.ErrorLevel.Error); validateContext.AddError(item.DataEntity, errInfo); continue; } } }

privateExtendedDataEntity GetDataEntity( ExtendedDataEntity[] dataEntities, long pkId) {

foreach (ExtendedDataEntity item in dataEntities) {

if (pkId == Convert.ToInt64(item[\])) { return item; } }

returnnewExtendedDataEntity(); } } }

BeforeExecuteOperationTransaction

操作执行前(事务外)事件,在数据检查完毕,正式开始执行操作前触发。

语法

虚方法定义 C# publicvirtualvoid BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e); 参数说明

参数e的属性如下: 属性 bool Cancel string CancelMessage DynamicObject[] DataEntitys SelectedRows 描述 是否取消操作 操作取消原因 待处理的单据数据包 IEnumerable 通过操作校验的单据数据包 备注

此事件在事务外,不受事务保护。

通常将一些与数据更新无关的前期数据准备,放在本事件中进行,以减少事务占用时间。

案例–销售价目表保存前更新数量区间价格

代码来源

Kingdee.K3.SCM.App.Sal.ServicePlugIn.SalPrice.Save

需求背景

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作插件示例代码(8)在线全文阅读。

操作插件示例代码(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/483187.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: