
# 采购订单货源关系检查。
## 背景:
采购启用货源关系以后,采购申请单批量下推采购订单多时候,选不到供应商的时候也不知道如何判断是哪个物料没有维护货源关系
## 原理:
使用PY插件,点击按钮选择供应商,查询该供应商是否有跟这个单据上的物料绑定货源关系,如果没有,则弹出未绑定货源关系的物料
## 效果:

## 代码:
# 引入clr运行库
# -*- coding: utf-8 -*-
import clr
# 添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference("Kingdee.BOS.Contracts")
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.App.Core')
clr.AddReference('Kingdee.BOS.ServiceHelper')
# 导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DependencyRules import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Core.Const import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.Core.List import *
from Kingdee.BOS.Core.List.PlugIn import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Metadata.FieldElement import *
from Kingdee.BOS.Core.Permission import *
from Kingdee.BOS.JSON import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.ServiceHelper import *
from System import *
from System.Data import *
from System.Collections.Generic import *
# 子页面关闭回调处理方法
def ChildFromClosed(obj):
if obj.ReturnData:
rowids = obj.ReturnData.GetPrimaryKeyValues() # 选择的供应商id
sql = """SELECT Fname from T_BD_SUPPLIER_L WHERE FSUPPLIERID = '%s' """ % (rowids[0]).format("1")
sql_result = DBUtils.ExecuteDataSet(this.Context, sql)
tab = sql_result.Tables[0]
supplier_name = tab.Rows[0]['Fname']
billObj = this.View.Model.DataObject
order_date = billObj["Date"]
FBUSINESSTYPE = billObj["BUSINESSTYPE"]
entity = billObj["POOrderEntry"]
# material_ids = []
opResult = OperationResult()
index = 0
for line in entity:
matObj = line["MaterialId"]
MaterialId = matObj["Id"]
matNum = matObj["Number"]
# this.View.ShowMessage("MaterialId_type:%s" % (type(MaterialId)))
# material_ids.append({matNum: MaterialId})
sql = ("""SELECT
T_BD_MATERIAL.fnumber
FROM
T_PUR_CATALOG
LEFT JOIN T_PUR_CATALOGENTRY ON T_PUR_CATALOG.FID = T_PUR_CATALOGENTRY.fid
LEFT JOIN T_BD_MATERIAL ON T_PUR_CATALOGENTRY.FMaterialId = T_BD_MATERIAL.FMaterialId
WHERE
T_PUR_CATALOGENTRY.FMaterialId = %s
AND T_PUR_CATALOGENTRY.FETYSUPPLIERID = '%s'