电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-1613

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

【问题背景】

入库单上输入序列号、备注,实现单据保存序列号备注写入序列号主档备注字段


【说明】

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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信