本文介绍了如何开发一个库存管理系统的关账校验插件,涉及Kingdee.K3.Core组件的引用、AbstractInvAccountValidatorPlugIn类的继承、InvAccountOffValidatorErrInfo方法的实现等步骤。要求实现中返回校验的异常信息集合,并定义了多个关键属性及返回信息的具体结构(包括OperateSuccess、StockOrgID、ErrInfo或IgnoErrInfo)。还提到了库存管理参数的插件注册,关账校验抽象类的属性和方法说明,包括关账日期、组织ID、临时表等。同时提供了可忽略和不可忽略校验的参考案例,以及反编译查看实现逻辑的建议。
【实现步骤】
引用Kingdee.K3.Core组件。
继承AbstractInvAccountValidatorPlugIn类。
实现InvAccountOffValidatorErrInfo方法,返回校验的异常信息集合。
InvAccountValidatorResult返回信息中需要:
a.OperateSuccess;
b.StockOrgID;
c.ErrInfo(不可忽略错误信息)或 IgnoErrInfo (可忽略错误信息);
d.ErrInfo或IgnoErrInfo只需要返回ErrMsg 即可;
4. 库存管理参数-关账参数注册此插件(标准产品增加插件通过预插数据注册)。
【关账校验抽象类说明】
属性:CloseDate,AccountOrgIds为关账界面对于勾选的组织以及选择的关账日期;
属性:TmpTableName,TmpDataCount为关账组织构建的临时表以及临时表对于的行数。
属性:AccountValidFailOrgIds 为关账逻辑校验1、2步中以及校验失败的组织。
InvAccountOffValidatorErrInfo方法参数:isCallByOwner 是否为存货关账调用。
InvAccountOffValidatorErrInfo方法参数:isCheckIgnoErrInfo 是否忽略IgnoErrInfo型校验。
【参考案例】
可忽略校验:校验未审核的盘点作业单。可反编译Kingdee.K3.SCM.App.Core 查看InvAccountStkCountBillValidator实现逻辑。
不可忽略校验:检查未日结的零售单。可反编译Kingdee.K3.SCM.App.Core 查看InvAccountRetailBillValidator实现逻辑。
【其他】
关账校验服务抽象类:
/// <summary> /// 关账校验服务抽象类 /// </summary> [Description("关账校验服务抽象类")] public abstract class AbstractInvAccountValidatorPlugIn { #region 属性 public Context Context { get; set; } /// <summary> /// 关账界面:关账日期 /// </summary> public DateTime CloseDate { get; set; } /// <summary> /// 关账界面:关账组织 /// </summary> public List<long> AccountOrgIds { get; set; } /// <summary> /// 关账Session临时表 /// </summary> public String TmpTableName { get; set; } /// <summary> /// TmpTableName临时表数据行数 /// </summary> public int TmpDataCount { get; set; } /// <summary> /// 标准校验已经失败的关账组织列表 /// </summary> public List<long> AccountValidFailOrgIds { get; set; } #endregion #region 抽象实现类 /// <summary> /// 库存关账校验:返回值:不可忽略校验 处理ErrInfo错误信息集合;可忽略校验 处理IgnoErrInfo错误信息集合; /// </summary> /// <param name="isCallByOwner">是否存货核算货主关账调用(为true时,表示是存货关账校验操作,否则为库存关账校验操作)</param> /// <param name="isCheckIgnoErrInfo">是否校验:可忽略错误信息 (为false时,无需进行可忽略校验信息,不会提示IgnoErrInfo信息)</param> /// <returns></returns> public virtual List<InvAccountValidatorResult> InvAccountOffValidatorErrInfo(bool isCallByOwner, bool isCheckIgnoErrInfo) { return null; } /// <summary> /// 库存关账校验:修改校验提示信息 /// </summary> /// <param name="isCallByOwner">是否存货核算货主关账调用(为true时,表示是存货关账校验操作,否则为库存关账校验操作)</param> /// <param name="errInfo">当前关账下异常信息集合,可根据此异常结构,修改其提示信息</param> /// <returns>True时,则显示errInfo异常信息。</returns> public virtual bool InvAccountOffModifyErrInfo(bool isCallByOwner, List<StockOrgOperateResult> errInfo) { return false; } #endregion }
推荐阅读