二开实现单据录入携带序列号主档备注信息

之前一篇文章说到,将入库单上输入序列号、备注,实现单据保存序列号备注写入序列号主档【二开实现单据保存序列号备注写入序列号主档】
这里继续实现另外一部分需求:在出库单据录入序列号时,自动携带主档备注信息到序列号子单据体备注字段。
【实现】
大体思路为:表单插件重写DataChanged事件,监听序列号数量字段FSNQTY, 值变化NewValue > OldValue时表示新添加序列号,根据当前序列号和组织物料数据,读取对应的序列号主档信息回填。
【二开实现序列号单据备注保存写入序列号主档(Python实现)】
1、序列号添加"备注"字段引用属性

2、表单插件逻辑
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.K3.BD.ServiceHelper;
using Kingdee.K3.SCM.Stock.Business.PlugIn;
using Kingdee.K3.Core.SCM.STK;
using System;
using System.Collections.Generic;
using System.Linq;
public override void DataChanged(BOS.Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e)
{
if (e.Field.Key.ToUpper() == "FSNQTY")
{
// 删除行不触发
if(Convert.ToInt64(e.NewValue) > Convert.ToInt64(e.OldValue))
{
DoSerialNoDataChanged(e);
}
}
}
internal void DoSerialNoDataChanged(DataChangedEventArgs e)
{
foreach (Entity entity in this.Model.BusinessInfo.Entrys)
{
if (entity is SNSubEntryEntity)
{
SNSubEntryEntity snEntity = (SNSubEntryEntity)entity;
int parRowIndex = this.View.Model.GetEntryCurrentRowIndex(snEntity.ParentEntity.Key);
DynamicObject entityDataObject = this.View.Model.GetEntityDataObject(snEntity.ParentEntity, parRowIndex);
if (entityDataObject != null)
{
DynamicObjectCollection dataEntrys = snEntity.DynamicProperty.GetValue(entityDataObject) as DynamicObjectCollection;
Field field = this.View.BusinessInfo.GetField("FMaterialId");
DynamicObject dyObj = field.DynamicProperty.GetValue<DynamicObject>(entityDataObject);
long materialId = 0;
if (dyObj != null)
{
materialId = Convert.ToInt64(dyObj[FormConst.MASTER_ID]);
}
field = this.View.BusinessInfo.MainOrgField; // this.View.BusinessInfo.GetField("FStockOrgId");
dyObj = field.DynamicProperty.GetValue<DynamicObject>((DynamicObject)(entityDataObject.Parent));
long orgId = 0;
if (dyObj != null)
{
orgId = Convert.ToInt64(dyObj["Id"]);
}
if (materialId <= 0 || orgId <= 0)
{
return;
}
//初始化基础资料控制类型
var _baseDataOrgCtl = Common.GetInvBaseDataCtrolType(this.View.Context);
if (dataEntrys != null && dataEntrys.Count > 0)
{
foreach(DynamicObject item in dataEntrys)
{
string strSerialNO = item["SerialNo"].ToString();
if (item["SerialNote"] != null && !string.IsNullOrEmpty(item["SerialNote"].ToString())) // 备注信息不为空就不再获取了
{
continue;
}
List<SimpleSerialSnap> rets = SerialServiceHelper.GetSerialByNumber(this.View.Context, _baseDataOrgCtl, strSerialNO, orgId, orgId, materialId, false, false).ToList();二开实现单据录入携带序列号主档备注信息
之前一篇文章说到,将入库单上输入序列号、备注,实现单据保存序列号备注写入序列号主档【二开实现单据保存序列号备注写入序列号主档】这里...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



