单据联查库存查询二开插件原创
14人赞赏了该文章
1,285次浏览
编辑于2021年12月21日 13:38:24
【业务背景】想控制比如做销售单据时库存查询只能选到A仓库的物料返回数据,做生产单据时库存查询只能选到B仓库的物料,避免做单人员误选。目前做单人员是仓管人员,在库存查询中还是要能看到所有物料
【需求分析】
1、"库存查询"根据不同的单据使用指定的仓库作为过滤条件获取数据,当前服务为通用服务,无法通过BOS做特殊配置
2、从单据联查库存的界面分析看, 通过选择表单上各库存维度的数据去做筛选,那么只要实现"仓库"的自动赋值,然后触发数据刷新,就能实现按照特定仓库去过滤即时库存数据
# 定义插件,重写AfterBindData事件处理
using Kingdee.BOS.Core.DynamicForm.PlugIn; using System; namespace Kingdee.K3.SCM.Stock.Business.PlugIn.Inventory { public class InvJoinQueryEditEx : AbstractDynamicFormPlugIn { public override void AfterBindData(EventArgs e) { object billFormId = this.View.OpenParameter.GetCustomParameter("QueryBillFormId"); if (billFormId != null) { string queryBillFormId = billFormId.ToString(); switch (queryBillFormId) { case "STK_MisDelivery": this.Model.SetValue("FStockIdH", 499413); break; case "SAL_SaleOrder": this.Model.SetValue("FStockIdH", 100022); break; } this.View.UpdateView("FStockIdH"); this.View.InvokeFieldUpdateService("FStockIdH", -1); this.View.GetMainMenu().ItemClick("tbRefresh"); this.View.SendDynamicFormAction(this.View); } } } }
Python版本:
clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from System import * def AfterBindData(e): billFormId = this.View.OpenParameter.GetCustomParameter("QueryBillFormId") paraOrgId = this.View.OpenParameter.GetCustomParameter("QueryOrgId"); dict = {"STK_MisDelivery" : 499413, "SAL_SaleOrder": 100022} if billFormId is not None and paraOrgId is not None: if dict.__contains__(str(billFormId)): this.Model.SetValue("FStockOrgIdH", str(paraOrgId)) this.View.UpdateView("FStockOrgIdH") this.View.InvokeFieldUpdateService("FStockOrgIdH", -1) this.Model.SetValue("FStockIdH", dict[str(billFormId)]) this.View.UpdateView("FStockIdH") this.View.InvokeFieldUpdateService("FStockIdH", -1) this.View.GetMainMenu().ItemClick("tbRefresh") this.View.SendDynamicFormAction(this.View)
3、注册插件
【实现效果】
说明:该插件实现针对各单据指定了仓库,属于需求特殊化处理,大部分的业务场景不适用,系统标准功能即可满足。
赞 14
14人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读