MRP运算时校验运算组织和物料范围等信息
【应用场景】
对于分组织,或分物料运算的应用场景,系统标准的校验函数是否正在计划运算可能不甚满足,本贴力求以最简便的二开方式达到该需求目标。
【注意事项】
本方案基于补丁PT-146930(发布时间:2022/11/10)实现,因此要利用本方案前提是将星空环境升级到该版本或更新。
【案例演示】
1、编写二开校验器,以下是出厂示例的预测单反审核插件调用的校验器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Validation;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.K3.Core.MFG.PLN.ParamOption;
using Kingdee.K3.MFG.App;
using Kingdee.K3.MFG.Contracts.PLN;
using Kingdee.K3.Core.MFG;
namespace Kingdee.K3.MFG.PLN.App.ServicePlugIn.PlanForecast.Validator
{
/// <summary>
/// 是否正在MRP运算校验,调用本校验器的单据操作插件须加载组织,单据编号和单据类型字段
/// </summary>
public class IsMrpCalingValidator : AbstractValidator
{
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
{
if (dataEntities.IsEmpty()) return;
//AppServiceContext在引用组件Kingdee.K3.MFG.App.dll后可用
//如发现下面一句获取的正在计划运算信息有误,则应清除运算冲突,路径:计划管理》运算日志查询》冲突冲突
MrpCalculatingInfo mrpCalculatingInfo = AppServiceContext.GetService<IMrpLogExtService>().GetMrpCalculatingInfo(ctx);
foreach (ExtendedDataEntity DataItem in dataEntities)
{
DynamicObject billData = DataItem.DataEntity;
long orgId = billData.GetDynamicValue<long>("ForeOrgId_Id");
if (mrpCalculatingInfo.DemandOrgIds.Contains(orgId))
{ //如果只校验组织,则这里已经可以判断预测单不能通过本校验器了
string billTypeId = billData.GetDynamicValue<string>("BillTypeID_Id");
HashSet<string> billTypeIds;
if (mrpCalculatingInfo.DemandFormIdBillTypeMaps.TryGetValue(MFGFormIdConst.SubSys_PLN.ForecastOrder, out billTypeIds)
&& billTypeIds.Contains(billTypeId))
{//校验本单的单据类型是参与运算的,则不能通过本校验器
string billNo = billData.GetDynamicValue<string>("BillNo");
string errMsg = string.Format("MRP is calculating!", billNo);
validateContext.AddError(billData,
new ValidationErrorInfo("",
billData.GetDynamicValue<string>("Id"),
DataItem.DataEntityIndex,
DataItem.RowIndex,
"MrpCalingError",
errMsg,
"MRPCalculating"));
}
}
}
}
}
}
2、针对以上校验器代码示例,有必要详细说明的是,数据类MrpCalculatingInfo所包含的信息较丰富,上面示例有些并未用到,详见下图:
【实现步骤】
1、在想要使用该校验器的操作操作上调用该校验器:
2、BOSIDE扩展对应单据元数据,注册对应的操作插件,例如:
【功能验证】
1、登录业务站点,对预测单进行反审核,若预测组织正在计划运算,则会被校验不通过(具体提示信息可在二开的校验器上完善),下图只是将上面的示例校验器达到的效果截图:
MRP运算时校验运算组织和物料范围等信息
本文2024-09-23 03:15:39发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-157720.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf