二开实现单据保存序列号备注写入序列号主档

【问题背景】
入库单上输入序列号、备注,实现单据保存序列号备注写入序列号主档备注字段
【说明】
1、单据在"保存"操作中配置有"保存并更新序列号主档"服务,该通用服务无法修改,只能二开保存插件写入数据
2、按照服务的执行顺序,保存操作先执行"保存并更新序列号主档"服务,该服务会生成序列号主档资料,并返回相关序列号信息填充子单据体。后执行保存插件中的逻辑,在插件中拿到保存的序列号内码及备注信息,以此作为更新的条件
【二开实现】:这里以"其他入库单"为例,说明具体的二开逻辑
序列号单据体 一般有个字段:一个序列号文本 (可编辑录入),一个序列号基础资料(隐藏)。 单据保存后会根据文本编码生产主档 反填对应的内码至 序列号基础资料字段, 通过这个序列号内码+备注信息,实现序列号主档资料更新
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Data;
using System.Transactions;
namespace Kingdee.K3.SCM.App.Stock.ServicePlugIn.StockSerialMainFileService
{
public class SerialSaveEx : AbstractOperationServicePlugIn
{
public override void AfterExecuteOperationTransaction(BOS.Core.DynamicForm.PlugIn.Args.AfterExecuteOperationTransaction e)
{
if (!this.OperationResult.IsSuccess)
{
return;
}
if (e.DataEntitys == null || e.DataEntitys.Length == 0)
{
return;
}
Dictionary<long, string> havaUpdateSerials = new Dictionary<long, string>();
foreach (DynamicObject bill in e.DataEntitys)
{
DynamicObjectCollection billEntry = bill["STK_MISCELLANEOUSENTRY"] as DynamicObjectCollection;
foreach(DynamicObject entry in billEntry)
{
DynamicObjectCollection snEntrys = entry["STK_MISCELLANEOUSSERIAL"] as DynamicObjectCollection;
foreach(DynamicObject sn in snEntrys)
{
long serialId = Convert.ToInt64(sn["SerialId_Id"]);
string serialNote = Convert.ToString(sn["SerialNote"]);
if (!string.IsNullOrEmpty(serialNote))
{
havaUpdateSerials[serialId] = serialNote;
}
}
}
}
#region 将单据中的序列号备注, 更新到调入序列号主档中
if (havaUpdateSerials.Count > 0)
{
List<SqlObject> lstSqlObj = new List<SqlObject>();
IDBService service = ServiceHelper.GetService<IDBService>();
string lotTmpTable = service.CreateTemporaryTableName(this.Context);
BuildUpdateDestSerialTmpTable(this.Context, lotTmpTable);
DataTable serialDt = new DataTable(lotTmpTable);
serialDt.Columns.Add(new DataColumn() { ColumnName = "FSERIALID", DataType = typeof(long), AllowDBNull = false, DefaultValue = 0 });
serialDt.Columns.Add(new DataColumn() { ColumnName = "FDESCRIPTION", DataType = typeof(string), AllowDBNull = true, DefaultValue = "" });
foreach (KeyValuePair<long, string> billEntrySerial in havaUpdateSerials)
{
DataRow dr = serialDt.NewRow();
dr["FSERIALID"] = billEntrySerial.Key;
dr["FDESCRIPTION"] = billEntrySerial.Value;
serialDt.Rows.Add(dr);
}
DBUtils.BulkInserts(this.Context, serialDt);
string sql = string.Format(@"MERGE INTO T_BD_SERIALMASTER_L IT USING
(
SELECT T二开实现单据保存序列号备注写入序列号主档
【问题背景】入库单上输入序列号、备注,实现单据保存序列号备注写入序列号主档备注字段【说明】1、单据在"保存"操作中配置有"保存并更新序...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



