库存更新触发获取更新后即时库存数量并保存实现方案

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

库存更新触发获取更新后即时库存数量并保存实现方案

一、【业务需求】

需要在单据审核或反审核后更新单据上的即时库存数量,并将该字段保存到数据库中


二、【功能分析】

之前两篇帖子

自动获取即时库存配置方案(一)

自动获取即时库存配置方案(二)


配置实现了库存更新操作触发后,插件调用系统预置的获取即时库存操作,从而实现页面显示更新后的即时库存。

但是标准产品中的即时库存字段是一个虚拟字段,没有配置数据库字段的映射,只能作为显示使用,无法持久化保存到数据库。


实现思路:

1、扩展实体字段(数量类型),用于保存显示即时库存数量

2、获取即时库存操作,做对应配置,即时库存数量返回映射到扩展的数量字段

3、获取即时库存操作返回数据,最终都需要对页面的数量字段进行赋值,赋值触发值更新事件,二开插件,表单插件中DataChanged事件中针对即时库存数量字段触发时,对单据数据进行一次保存操作


image.webp

image.webp


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;
            }
        }
    }
}


审核后:

image.webp

image.webp


反审核后:

image.webp

image.webp





根本不需要如此麻烦,直接在单据头用获取库存+调用值更新:值更新做到当前库存字段上,自定义字段=当前库存,调用值更新也选择当前库存字段,即可实现。。

库存更新触发获取更新后即时库存数量并保存实现方案

一、【业务需求】需要在单据审核或反审核后更新单据上的即时库存数量,并将该字段保存到数据库中二、【功能分析】之前两篇帖子【自动获取即...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息