金蝶云星空通过python实现物料编码审核后自动分配组织

一、业务场景

        1、本公司物料编码来源于PDM系统(神州数码),并调用金蝶云星空API接口导入物料和调用审核接口。

        2、本公司PDM导入的物料会在,云星空新增字段上写入标识,代表本物料将导入到那个组织。

        3、由于公司体量比较大显然人工分配已经已经不现实并且耗时得不偿失。

二、方案选择

        根据公司的需求现衍生出两个可行性发难分别是:

                1、云星空的自动分配方案

                2、开发插件实现自动分配方案

三、实施方法选择

        根据上面的发难我选择后者,因为插件分配是实时而云星空自带的是定时执行,定时执行容易影响业务。容易发生不必要的错误。

四、实施方法

        1、登录BOS平台

        

        2、进入BOS打开基础资料——》选择物料并双击打开

        3、点开操作列表——》选择审核操作

        4、选择服务控制——》服务插件——》注册python脚本

5、编写二开审核自动分配脚本

         

        6、如保存提示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.ServiceHelper')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.WebApi.Client')
clr.AddReference('Newtonsoft.Json')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.WebApi.Client import *
from Newtonsoft.Json.Linq import *
#重载cloud插件模型的主菜单按钮点击事件
def OnPreparePropertys(e):
	e.FieldKeys.Add("FCreateOrgId");
	e.FieldKeys.Add("FUseOrgId");
def EndOperationTransaction(e):
	appId="206689_XZ9I1ZCL0kl+xfxL473NSa";
	appSecret="5411be2fc75c476f99cb098b0";
	url='http://127.0.0.1/k3cloud/';
	DBId="61cc6e7c5f48d3";
	user="Administrator";
	loginFlag=0;
	for billObj in e.DataEntitys:
		billNo = str(billObj["Number"]);
		billId=str(billObj["Id"]);
		createOrgId=str(billObj["CreateOrgId_Id"]);
		userOrgId=str(billObj["UseOrgId_Id"]);
		zzdr=str(billObj["F_ora_Text"]); #获取导入组织
		if (zzdr<>0):
			if(createOrgId<>userOrgId):
				continue;
			if(loginFlag==0):
				loginFlag=1;
				client=K3CloudApiClient(url);
				loginResult=client.LoginByAppSecret(DBId,user,appId,appSecret,2052);
				loginResultObj=JObject.Parse(loginResult);
				iResult=("{0}").format(loginResultObj["LoginResultType"]);
				if(iResult<>"1" and iResult<>"-5"):
					raise Exception("第三方登录失败!");
			if(zzdr=='1B-SH'):
				formId=this.BusinessInfo.GetForm().Id;
				obj="{'PkIds':'IDSTR','TOrgIds':'ORGID_STR','IsAutoSubmitAndAudit':'true'}";
				sql = ("""select org.FORGID
				from T_ORG_ORGANIZATIONS org
				left join T_BD_CUSTOMER m on org.FORGID=m.FUSEORGID and m.FNUMBER='{0}' 
				where m.FNUMBER is null and org.FNUMBER in ('1B01')""").format(billNo);
				ds = DBServiceHelper.ExecuteDataSet(this.Context,sql);
				AllRows=ds.Tables[0].Rows;
				if(AllRows.Count<=0):
					continue;
				orgList=List[str]();
				for r in AllRows:
					orgId=str(r["FORGID"]);
					orgList.Add(orgId);
				orgIds=",".join(orgList.ToArray());
				data=obj.Replace("IDSTR",billId).Replace("ORGID_STR",orgIds);
				#raise Exception(data);
				allocateR=client.Allocate(formId,data);
			if (zzdr=='1B-SZ'):
				formId = this.BusinessInfo.GetForm().Id;
				obj = "{'PkIds':'IDSTR','TOrgIds':'ORGID_STR','IsAutoSubmitAndAudit':'true'}";
				sql = ("""select org.FORGID
					from T_ORG_ORGANIZATIONS org
					left join T_BD_CUSTOMER m on org.FORGID=m.FUSEORGID and m.FNUMBER='{0}' 
					where m.FNUMBER is null and org.FNUMBER in ('1B02')""").format(billNo);
				dY = DBServiceHelper.ExecuteDataSet(this.Context, sql);
				AllRows = dY.Tables[0].Rows;
				if (AllRows.Count <= 0):
					continue;
				orgList = List[str]();
				for r in AllRows:
					orgId = str(r["FORGID"]);
					orgList.Add(orgId);
				orgIds = ",".join(orgList.ToArray());
				data = obj.Replace("IDSTR", billId).Replace("ORGID_STR", orgIds);
				# raise Exception(data);
				allocateR = client.Allocate(formId, data);
		else:
			this.View.ShowMessage("没事设置指定的导入组织"+zzdr)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值