首页 > 其他分享 >金蝶云星空企业版 审核反写插件

金蝶云星空企业版 审核反写插件

时间:2024-09-18 23:14:32浏览次数:10  
标签:插件 QGXM 金蝶 分录 BOS Kingdee public string 星空

金蝶云星空企业版 审核反写插件 亮点:只需配置好参数,代码无需改动

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using System;
using System.ComponentModel;

namespace CQXR.DDL.K3.BOS.BusinessPlugIn.ServicePlugIn
{
    [Kingdee.BOS.Util.HotUpdate]
    [Description("xxx模块-下推xxx--审核服务插件反写")]
    
    public class XxxxYyyy : AbstractOperationServicePlugIn
    {
        //上下游单据 参数
        public string sourceid = "PNYO_8DBG";// 源单(上游)单据标识
        public string sourceEntity = "F_QGXM_8DBGJUCS";// 分录ORM实体(上游)
        public string currentEntity = "F_QGXM_8DBGJUCS";// 分录ORM实体(下游)
        public string currentid = "QGXM_YZCS";// 当前(下游)单据标识
        public string ydbh = "F_QGXM_YDBH";// 源单编号标识
        public string ydid = "F_QGXM_YDID";// 源单id
        public string flid = "F_QGXM_8DBGJUCS_038";// 变更分录标识
        public string check = "F_QGXM_CheckBox_iyi";// 变更分录 是否下推行 标识
        public string ydhid = "F_QGXM_YDHID";// 变更分录 源单行id 标识
        // 变更分录 字段 标识 
        public string[] field =
        {
            "F_QGXM_Text_795_vb1_jdx",
            "F_QGXM_Base_qku_c1c_2om",
            "F_QGXM_YZWCRQ_kyb",
            "F_QGXM_Text_h1g_391"
        };
        // ORM实体名 字段 如果字段属性=基础资料 后面要加 _Id
        public string[] orm =
        {
            "F_QGXM_Text_795",
            "F_QGXM_Base_qku_Id",
            "F_QGXM_YZWCRQ",
            "F_QGXM_Text_h1g"
        };

        #region 代码部分无特殊情况无需改动,只需将上下游参数配置完成即可
        public override void OnPreparePropertys(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreparePropertysEventArgs e)
        {
            base.OnPreparePropertys(e);
            e.FieldKeys.Add(ydbh);//源单编号
            e.FieldKeys.Add(ydid);//源单id

            e.FieldKeys.Add(flid);//变更分录标识
            for (int k = 0; k < field.Length; k++) {
                e.FieldKeys.Add(field[k]);
            }
            e.FieldKeys.Add(check);
            e.FieldKeys.Add(ydhid);
        }

        public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
        {
            base.EndOperationTransaction(e);
            if (e.DataEntitys == null || e.DataEntitys.Length <= 0)
            {
                return;
            }
            foreach (DynamicObject dyObject in e.DataEntitys)
            {
                long FID = Convert.ToInt64(dyObject["Id"]);
                long FSouceID = Convert.ToInt64(dyObject[ydid]);
                FormMetadata Meta = (FormMetadata)MetaDataServiceHelper.Load(this.Context, currentid, true);//当前单据标识
                DynamicObject ObjChange = BusinessDataServiceHelper.LoadSingle(this.Context, FID, Meta.BusinessInfo.GetDynamicObjectType());
                FormMetadata EmpinfoMeta = (FormMetadata)MetaDataServiceHelper.Load(this.Context, sourceid, true);//源单据标识
                DynamicObject Obj = BusinessDataServiceHelper.LoadSingle(this.Context, FSouceID, EmpinfoMeta.BusinessInfo.GetDynamicObjectType());

                #region 变更明细反写
                DynamicObjectCollection FEntityChange = ObjChange[currentEntity] as DynamicObjectCollection;        //变更分录实体
                DynamicObjectCollection FEntity = Obj[sourceEntity] as DynamicObjectCollection;                    //源单分录实体
                for (int i = 0; i < FEntityChange.Count; i++)
                {
                    if (FEntityChange[i][check].ToString().Equals("False", StringComparison.OrdinalIgnoreCase))
                    {
                        DynamicObject AddEntry = new DynamicObject(FEntity.DynamicCollectionItemPropertyType);
                        for (int k = 0; k < orm.Length; k++)
                        {
                            AddEntry[orm[k]] = FEntityChange[i][orm[k]];
                        }
                        FEntity.Add(AddEntry);
                    }
                    if (FEntityChange[i][check].ToString().Equals("True", StringComparison.OrdinalIgnoreCase))
                    {
                        int j = 0; bool done = false;
                        while (!done && j < FEntity.Count)
                        {
                            if (FEntity[j]["Id"].ToString().Equals(FEntityChange[i][ydhid].ToString(), StringComparison.OrdinalIgnoreCase))
                            {
                                for (int k = 0; k < orm.Length; k++)
                                {
                                    FEntity[j][orm[k]] = FEntityChange[i][orm[k]];
                                }
                                done = true;
                            }
                            j++;
                        }
                    }

                }
                for (int y = 0; y < FEntity.Count; y++)
                {
                    FEntity[y]["Seq"] = y + 1;
                }
                #endregion

                BusinessDataServiceHelper.Save(this.Context, Obj);
            }
        }
        #endregion
    }
}

 

标签:插件,QGXM,金蝶,分录,BOS,Kingdee,public,string,星空
From: https://www.cnblogs.com/wishit/p/18419546

相关文章

  • 多分录下推插件模板,亮点:只需配置好参数,代码无需改动
    多分录下推插件模板,金蝶云星空企业版亮点:只需配置好参数,代码无需改动usingKingdee.BOS.Core.Bill.PlugIn;usingKingdee.BOS.Core.Metadata;usingKingdee.BOS.ServiceHelper;usingKingdee.BOS.Util;usingSystem;usingSystem.ComponentModel;usingSystem.Data;nam......
  • 反写多选基础资料 金蝶云星空 企业版 插件
    反写多选基础资料[Kingdee.BOS.Util.HotUpdate][Description("xx模块-下推xxx--审核服务插件反写多选基础资料")]publicclassXxxxYyyy:AbstractOperationServicePlugIn{publicoverridevoidOnPreparePropertys(Kingdee.BOS.Core.DynamicFor......
  • 金蝶星空企业版 插件 通过SQL反写数据
    金蝶星空企业版插件通过SQL反写数据[Kingdee.BOS.Util.HotUpdate][Description("xx模块-下推stepx--xx插件反写xx资料")]publicclassXxxxYyyy:AbstractOperationServicePlugIn{publicstringydbh="F_QGXM_YDBH";//源单编号public......
  • HighlightPlus插件介绍
    仅对官方文档进行了翻译注意:官方文档本身就落后实际,但对入门仍很有帮助,核心并没有较大改变,有的功能有差异,以实际为准.(目前我已校正了大部分差异,后续我会继续维护该文档)为什么为该插件做翻译?功能强大,使用简单,且还在维护.基于此版本的内置渲染管线文档快速开......
  • zblog上传安装主题插件不成功的原因和解决办法
    当在Z-Blog中上传安装主题或插件不成功时,可能的原因有很多。下面列出了一些常见的原因及相应的解决办法:1.文件大小超出限制问题描述:上传的文件包可能超出了服务器允许的最大文件大小。解决方法:检查后台的“全局设置”中的“允许上传文件的大小”,并适当增大这个值。如果......
  • 一款源码阅读的插件
    文章目录进度汇报功能预览添加高亮标记高亮风格设置笔记颜色设置数据概览高亮数据详情结尾进度汇报之前提到最近有在开发一个源码阅读的IDEA插件,第一版已经开发完上传插件市场了,等官方审批通过就可以尝鲜了。插件名称:Marksourcecode,别纠结名字了,简单的介绍一下......
  • zblog水印插件上传图片提示getimagesize(tem/phpOMxjlk)错误
    当在Z-Blog中使用水印插件上传图片时出现 getimagesize(tem/phpOMxjlk) 错误,这通常意味着 getimagesize 函数在处理图片时遇到了问题。这个错误可能是由以下几个原因引起的:1.图片文件不存在或路径错误问题描述:getimagesize 函数尝试访问一个不存在的文件或路径错误。......
  • 如何解决zblog定时发布插件无效问题?
    解决Z-Blog定时发布插件无效的问题可以从以下几个方面入手:1.检查插件兼容性问题描述:插件可能与当前Z-Blog版本不兼容。解决方法:确认插件版本是否适用于您的Z-Blog版本。如果插件版本过旧或过新,尝试寻找与您的Z-Blog版本相匹配的插件版本。2.检查插件配置问......
  • Zblog采集插件安装失败解决方法
    如果在安装Z-Blog采集插件时遇到失败的情况,可以按照以下步骤进行排查和解决:1.检查插件兼容性问题描述:插件与当前Z-Blog版本不兼容。解决方法:确认插件是否适用于您当前使用的Z-Blog版本。如果插件版本过旧或过新,尝试寻找与您的Z-Blog版本相匹配的插件版本。2.......
  • zblog水印插件上传图片提示getimagesize
    当您在使用Z-Blog的水印插件上传图片时遇到 getimagesize 的错误提示,这通常意味着PHP在尝试获取图片信息时出现了问题。getimagesize 函数用于获取图像尺寸和其他信息,如果它无法正常工作,可能是由于以下几个原因:文件类型不支持:getimagesize 不支持所有类型的图像文件。......