您现在的位置是:首页> 数字化系统数字化系统

金蝶云星空单据审核后自动下推其他单据并且自动审核

2025-05-29 数字化系统浏览量40

简介销售订单审核后,自动下推其他入库单。并且其他入库单自动提交审核。第一步,新增销售出库到其他入库的单据转换。步骤省略第二步在 销售出库单的审核按钮上,新增字段下推服务第三步自动提交审核其他入库单插件增加【复选框】字段(字段标识:F_PATC_CheckBox),自动审核,这个字段勾选的单据才执行自动提交审核在【操作列表】中找到【保存】,点击【编辑】。在【其他控制】-【服务插件】中注册Python脚本

销售订单审核后,自动下推其他入库单。并且其他入库单自动提交审核。

第一步,新增销售出库到其他入库的单据转换。步骤省略

第二步在 销售出库单的审核按钮上,新增字段下推服务

第三步自动提交审核其他入库单插件

增加【复选框】字段(字段标识:F_PATC_CheckBox),自动审核,这个字段勾选的单据才执行自动提交审核

在【操作列表】中找到【保存】,点击【编辑】。

在【其他控制】-【服务插件】中注册Python脚本

 code='''
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;

namespace YunyanTest
{
    public class PurReq : AbstractOperationServicePlugIn
    {
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            base.OnPreparePropertys(e);
            e.FieldKeys.Add("F_PATC_CheckBox");
        }

        public override void EndOperationTransaction(EndOperationTransactionArgs e)
        {
            foreach (DynamicObject entity in e.DataEntitys)
            {
                string FID = entity["ID"].ToString();

                string checkBox = entity["F_PATC_CheckBox"].ToString();

                //this.BusinessInfo

                if (checkBox == "1" || checkBox == "True")
                {
                    ISubmitService submitService = ServiceHelper.GetService<ISubmitService>();
                    var submitResult = submitService.Submit(this.Context, this.BusinessInfo, new string[] { FID.ToString() }, "");

                    if (submitResult.IsSuccess)
                    {
                        OperateOption option = OperateOption.Create();
                        IAuditService auditService = ServiceHelper.GetService<IAuditService>();
                        var auditResult = auditService.Audit(this.Context, this.BusinessInfo, new string[] { FID.ToString() }, option);
                    }
                }


            }
        }
    }
}
'''

refDlls = '''
Kingdee.BOS
Kingdee.BOS.App
Kingdee.BOS.BusinessEntity
Kingdee.BOS.Contracts
Kingdee.BOS.Core
Kingdee.BOS.DataEntity
Kingdee.BOS.MC.ServiceHelper
Kingdee.BOS.ServiceFacade.KDServiceFx
Kingdee.BOS.ServiceHelper
Kingdee.BOS.Web
Kingdee.BOS.WebApi.Client
Kingdee.K3.SCM.Core
Newtonsoft.Json
System
System.Core
System.Data
System.Data.DataSetExtensions
System.Xml
System.Xml.Linq
YunyanTest
'''

clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
from System import AppDomain
from System.IO import FileInfo
from System.Reflection import Assembly
from System.Reflection import BindingFlags
from System.CodeDom.Compiler import CompilerParameters
from Microsoft.CSharp import CSharpCodeProvider
from Kingdee.BOS.Core.Util import MD5Compute
from Kingdee.BOS.Cache import KCacheManagerFactory

def CompileCode(code, refDlls):    #动态编译C#代码,放入缓存
    refAsmNames = filter(lambda y: y <> '', map(lambda x: x.strip(), refDlls.split()))
    try:
        kcmgr = KCacheManagerFactory.Instance.GetCacheManager('PyCodeGeneratorCache', 'PyCodeGeneratorCache')
    except:
        return None
    cacheKey = MD5Compute().MDString(code + '-'.join(refAsmNames))
    if(kcmgr.Get(cacheKey) is not None):
        return kcmgr.Get(cacheKey)
    cSharpCodePrivoder = CSharpCodeProvider({'CompilerVersion':'v4.0'})
    codeCompiler = cSharpCodePrivoder.CreateCompiler()
    compilerParameters = CompilerParameters()
    compilerParameters.GenerateExecutable = False; 
    compilerParameters.GenerateInMemory = True; 
    for refAsmName in refAsmNames:
        asms = filter(lambda asm: asm.GetName().Name == refAsmName, AppDomain.CurrentDomain.GetAssemblies())
        if(len(asms) > 0):
            compilerParameters.ReferencedAssemblies.Add(FileInfo(asms[0].CodeBase.Substring(8)).DirectoryName.Replace('\', '/')+'/' + refAsmName + '.dll')
        else:
            try:
                compilerParameters.ReferencedAssemblies.Add(FileInfo(Assembly.Load(refAsmName).CodeBase.Substring(8)).DirectoryName.Replace('\', '/') + '/' + refAsmName + '.dll');
            except:
                pass
        compilerResults = codeCompiler.CompileAssemblyFromSource(compilerParameters, code);
    if (compilerResults.Errors.HasErrors):
        raise Exception('rn'.join(map(lambda err: err.ErrorText, compilerResults.Errors)))
    compiledAsm = compilerResults.CompiledAssembly;
    kcmgr.Put(cacheKey, compiledAsm)
    return compiledAsm

assembly = CompileCode(code, refDlls)
csPlugin = assembly.CreateInstance('YunyanTest.PurReq') if assembly is not None else None

def getPlugIn():
    csPlugin.SetContext(this.Context, this.BusinessInfo, this.FormOperation, this.Option)
    return csPlugin

def OnPreparePropertys(e):
    getPlugIn().OnPreparePropertys(e)

def EndOperationTransaction(e):
    getPlugIn().EndOperationTransaction(e)


Tags:

随机图文

文章评论

站点信息

  • 站点名称:lisen个人博客
  • 站点关键词:个人博客,phpcms,个人技术分享,网站建设
  • 栏目数量37篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们