案例–采购调价表审核时自动生效
代码来源
Kingdee.K3.SCM.App.Pur.ServicePlugIn.PAT.Audit
需求背景
采购调价表执行审核操作时,需要同步执行生效处理;
实现方案
在处理操作前,先明确要求加载采购调价表的某些关键字段,后面处理数据时,需要用到。
在操作前(事务内),先调用采购调价表的生效操作,自动生效,如果失败,则抛出错误。 如果采购调价表生效成功,则继续执行审核操作。
在此过程中,有几处需要用到Context属性,如加载采购调价表元数据、调用采购调价表的生效操作、记录错误日志等;
关键字
加载元数据状态转换写日志
示例代码
C#
using System;
using System.Collections.Generic; using System.Linq; using System.Text;
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.BOS.App;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.Metadata.DataEntity; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.Validation; using Kingdee.BOS.Core.Log; using Kingdee.BOS; using System.Data;
using Kingdee.BOS.App.Data; using Kingdee.K3.Core.SCM; using Kingdee.BOS.ServiceHelper;
namespace Kingdee.K3.SCM.App.Pur.ServicePlugIn.PAT {
publicclassAudit : AbstractOperationServicePlugIn {
publicoverridevoid OnPreparePropertys(PreparePropertysEventArgs e) {
e.FieldKeys.Add(\);
e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\);
e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\); e.FieldKeys.Add(\);
base.OnPreparePropertys(e); }
publicoverridevoid EndOperationTransaction(EndOperationTransactionArgs e) {
ISaveService service = ServiceHelper.GetService
Kingdee.BOS.Contracts.ServiceFactory.GetSetStatusService(this.Context);
IMetaDataService metaService = ServiceHelper.GetService
FormMetadata meta = (FormMetadata)metaService.Load(this.Context, SCMFormIdConst.PUR_PAT);
BusinessInfo info = meta.BusinessInfo;
List
long fid = Convert.ToInt64(item[\]);
DynamicObject dyOrg = item[\] asDynamicObject; long orgId = dyOrg == null ? 0 : Convert.ToInt64(dyOrg[\]); bool isEffectWithoutClick =
Convert.ToBoolean(SystemParameterServiceHelper.GetParamter(this.Context, orgId, 0, SCMFormIdConst.PUR_PurchaseParameter, \));
if (isEffectWithoutClick) {
kvp.Add(newKeyValuePair
if (kvp.Count > 0) {
IOperationResult result = setStatusService.SetBillStatus(
this.Context, info, kvp, null, \);
if (!result.IsSuccess) {
StringBuilder sb = newStringBuilder();
foreach (ValidationErrorInfo errorInfo in result.ValidationErrors) {
sb.Append(errorInfo.Message); sb.Append(\); LogObject logObj = newLogObject() {
Description = errorInfo.Message,
Environment = OperatingEnvironment.BizOperate, OperateName = \调价表生效失败\,
ObjectTypeId = K3.Core.SCM.SCMFormIdConst.PUR_PriceCategory };
logService.WriteLog(this.Context, logObj); }
thrownewKDException(\,\调价表生效失败。原因如下:调价表的\ + sb); } } } } }
FormOperation
当前执行的操作。
语法
属性定义 C# publicFormOperation FormOperation { get; privateset; } 备注
操作插件,可以基于此属性,判断出正在执行的操作类型,从而做出相应的处理。
案例 - 销售订单保存不做信用检查
代码来源
Kingdee.K3.SCM.App.Credit.Core.AppBusinessService.UpdateCreditAmount
需求背景
销售订单提交、关闭时,需要进行信用检查,更新客户信用额度;
实现方案
定制一个通用的信用检查、额度更新服务,供销售订单及其子类单据调用,可能会被配置到保存、提交、关闭、审核等各种操作上。
需要用到FormOperation属性,判断当前操作类型,如果被配置保存操作上,则强制忽略检查。
此示例代码,来自于服务端服务(AbstractAppBusinessService),但FormOperation用法相同。
关键字 操作类型
示例代码 C#
using System;
using System.Collections.Generic; using System.Linq; using System.Text;
using Kingdee.BOS; using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.K3.Core.SCM;
namespace Kingdee.K3.SCM.App.Credit.Core.AppBusinessService {
publicclassUpdateCreditAmount : AbstractAppBusinessService {
publicoverridevoid PreparePropertys(List
base.PreparePropertys(fieldKeys); // 无关逻辑,代码略去 }
publicoverridevoid DoActionBatch(AppBusinessServiceArgs e) {
//初始化变量及有效性检查
if (!InitialVariable(e)) return;
// 无关逻辑,代码略去 base.DoActionBatch(e); }
///
///初始化变量当发现不需要再执行服务时直接return false ///
///
privatebool InitialVariable(AppBusinessServiceArgs e) {
// 无关逻辑,代码略去
return ValidateData(e); }
privatebool ValidateData(AppBusinessServiceArgs e) {
//保存且不是变更调用不做信用检查和更新
if (e.FormOperation.Id.EqualsIgnoreCase(OperationNumber.Save)) { returnfalse; }
// 无关逻辑,代码略去
returntrue;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作插件示例代码(4)在线全文阅读。
相关推荐: