库存更新触发获取更新后即时库存数量并保存实现方案原创
金蝶云社区-邱育华
邱育华
5人赞赏了该文章 789次浏览 未经作者许可,禁止转载编辑于2022年10月11日 08:47:34

一、【业务需求】

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


二、【功能分析】

之前两篇帖子

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

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


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

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


实现思路:

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

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

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


image.png

image.png


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.png

image.png


反审核后:

image.png

image.png




赞 5