需求背景
业务单据已经生成凭证后,不允许反审核。
实现方案
建立一个通用的检查规则–单据是否生成凭证检查,在各个插件中引用此检查。
是否生成凭证检查规则,发现单据已经生成凭证之后,添加一个校验错误到操作错误列表,通知操作剔除此条数据不允许操作。
关键字
操作数据校验校验规则生成凭证检查剔除校验不通过数据 示例代码 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
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(); } } }
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 {
///
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.Add(Convert.ToInt64(item[\])); }
var service = BD.Contracts.ServiceFactory.GetLocalService
IEnumerable
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)在线全文阅读。
相关推荐: