库存更新触发获取更新后即时库存数量并保存实现方案
一、【业务需求】
需要在单据审核或反审核后更新单据上的即时库存数量,并将该字段保存到数据库中
二、【功能分析】
之前两篇帖子
配置实现了库存更新操作触发后,插件调用系统预置的获取即时库存操作,从而实现页面显示更新后的即时库存。
但是标准产品中的即时库存字段是一个虚拟字段,没有配置数据库字段的映射,只能作为显示使用,无法持久化保存到数据库。
实现思路:
1、扩展实体字段(数量类型),用于保存显示即时库存数量
2、获取即时库存操作,做对应配置,即时库存数量返回映射到扩展的数量字段
3、获取即时库存操作返回数据,最终都需要对页面的数量字段进行赋值,赋值触发值更新事件,二开插件,表单插件中DataChanged事件中针对即时库存数量字段触发时,对单据数据进行一次保存操作
using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.ServiceHelper; namespace XkDemo.SCM.Business.PlugIn { public class CustomQueryStockEditE : AbstractBillPlugIn { private long operation; public override void AfterDoOperation(AfterDoOperationEventArgs e) { operation = 0; if (e.Operation.OperationId == FormOperation.Operation_Audit || e.Operation.OperationId == FormOperation.Operation_UnAudit) { operation = e.Operation.OperationId; this.View.GetMainMenu().ItemClick("tbButton_2"); // 触发单据头获取即时库存操作 this.View.SendDynamicFormAction(this.View); this.View.UpdateView(); } base.AfterDoOperation(e); } public override void DataChanged(BOS.Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e) { switch (e.Field.Key.ToUpperInvariant()) { case "FQTY2": var entity = this.View.BusinessInfo.GetEntity("FEntity"); var rowCount = this.Model.GetEntryRowCount("FEntity"); // 最后一行值更新才触发保存,operation == 1:审核、operation == 26:反审核 if (e.Row + 1 == rowCount && (operation == 1 || operation == 26)) { BusinessDataServiceHelper.Save(this.View.Context, this.View.Model.DataObject); // 不触发保存数据检查、插件 } break; } } } }
审核后:
反审核后:
根本不需要如此麻烦,直接在单据头用获取库存+调用值更新:值更新做到当前库存字段上,自定义字段=当前库存,调用值更新也选择当前库存字段,即可实现。。
库存更新触发获取更新后即时库存数量并保存实现方案
一、【业务需求】需要在单据审核或反审核后更新单据上的即时库存数量,并将该字段保存到数据库中二、【功能分析】之前两篇帖子【自动获取即...
点击下载文档
上一篇:供应商协同送货通知单配置获取批号实现下一篇:销售出库单运费
本文2024-09-16 19:03:46发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26147.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章