如何实现返工类型生产订单选择序列号时按表体维护的辅助属性和批号进行过滤

需求描述:产成品分多批次多辅助属性入库,后续进行返工生产时,生产订单上已经维护了需要返工的批号和辅助属性值,但是选择序列号时还是会显示全部序列号,并未按订单上录入的批号和辅助属性进行过滤,当序列号数量很大时无法快速选择到对应的需要返工的序列号进行录入,希望选择序列号时可以按订单表体维护的批号和辅助属性进行过滤显示可以选择的序列号;
解决方案:二开生产订单的序列号选择过滤插件,详细逻辑如下:
(1)二开序列号过滤插件继承Prd_MoSerialFilter,重写FilterCanSelectSerials事件,在事件中先调用base.FilterCanSelectSerials(serials),然后按照单据分录的辅助属性和批号进行序列号过滤即可;
(2)二开插件挂在生产订单序列号表体的序列号录入设置属性的序列号过滤插件参数处,删除标准产品插件,如下图所示:

(3)示例代码如下:
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.Core.SCM.STK;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;
namespace TEST.K3.BD.Business.SerialInput.SerialFilter
{
public class test : Prd_MoSerialFilter
{
private bool isRework = false;
/// <summary>
/// 过滤可选择的序列号
/// </summary>
/// <param name="serials"></param>
public override void FilterCanSelectSerials(List<SimpleSerialSnap> serials)
{
base.FilterCanSelectSerials(serials);
int index = this.BillView.Model.GetEntryCurrentRowIndex(this.SNEntity.ParentEntity.Key);
DynamicObject parData = this.BillView.Model.GetEntityDataObject(this.SNEntity.ParentEntity, index);
string moBillType = Convert.ToString(this.BillView.Model.DataObject["BillType_Id"]);
Dictionary<string, DynamicObject> billTypePara = new Dictionary<string, DynamicObject>();
DynamicObject moBillTypePara;
if (!billTypePara.TryGetValue(moBillType, out moBillTypePara))
{
moBillTypePara =
BusinessDataServiceHelper.LoadBillTypePara(this.BillView.Context, "MoBillTypeParaSetting", moBillType);
billTypePara.Add(moBillType, moBillTypePara);
}
if (Convert.ToInt32(moBillTypePara["ProductType"]) == 2)
{
isRework = true;
}
if (parData == null)
{
如何实现返工类型生产订单选择序列号时按表体维护的辅助属性和批号进行过滤
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



