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

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

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

简介销售订单审核后,自动下推其他入库单。并且其他入库单自动提交审核。第一步,新增销售出库到其他入库的单据转换。步骤省略第二步在 销售出库单的审核按钮上,新增字段下推服务第三步自动提交审核其他入库单插件增加【复选框】字段(字段标识: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)

自动保存提交python代码二

##****************************保存服务插件*******************
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
#from Kingdee.BOS.Orm import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.App import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from System.Text import *
from System.Collections import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *

def OnPreparePropertys(e):
	e.FieldKeys.Add("F_MJRK");
def EndOperationTransaction(e):
	idList =List[object]();
	for billObj in e.DataEntitys:
		BillId = str(billObj["Id"]);
		F_MJRK = str(billObj["F_MJRK"]);
		if (F_MJRK == "1" or F_MJRK == "True"):
			idList.Add(BillId);
	if(idList.Count <= 0):
		return;
	pkArray = idList.ToArray();
	formID=this.BusinessInfo.GetForm().Id;
	meta = MetaDataServiceHelper.Load(this.Context, formID);
	submitOption = None;#OperateOption.Create();
	submitResult = BusinessDataServiceHelper.Submit(this.Context,meta.BusinessInfo,pkArray,"Submit",submitOption);
	if (submitResult.IsSuccess == True):
		auditOption = None;#OperateOption.Create();
		auditResult = BusinessDataServiceHelper.Audit(this.Context,meta.BusinessInfo,pkArray,auditOption);	


Tags:

随机图文

文章评论

站点信息

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