根据供应商等级控制是否允许二次采购原创
14人赞赏了该文章
142次浏览
编辑于2024年07月26日 11:02:49
【背景】
部分业务中有设置供应商等级,对于临时供应商会设置较低的等级,且需要使用等级控制不允许二次采购,如果在单据中进行控制?
【方案】
通过下面python脚本实现,在单据中获取等级编号,判断是否有采购记录。
【脚本】
import clr clr.AddReference('mscorlib') clr.AddReference('Kingdee.BOS.App') from System import * from Kingdee.BOS.App.Data import * def BeforeDoOperation(e): opCode=e.Operation.FormOperation.Operation.ToUpperInvariant(); if(opCode=="SAVE"): billObj = this.View.Model.DataObject; billNo = billObj["BillNo"]; Supplier = billObj["SupplierId"]; SupplierId = Supplier["ID"]; if Supplier["SupplierBase"][0]["SupplierGrade"] <> None: SupplierDJ = Supplier["SupplierBase"][0]["SupplierGrade"]["Number"]; if SupplierDJ == "GYSDJ_SYS_003": sql = "select FBILLNO from t_PUR_POOrder where FCANCELSTATUS <> 'B' and FDOCUMENTSTATUS <> 'Z' and FSUPPLIERID=" + str(SupplierId) + "order by FCREATEDATE"; a = DBUtils.ExecuteScalar(this.Context, sql, None); if a <> None and a<>billNo: e.Cancel = True; this.View.ShowWarnningMessage("供应商等级为C级且被单据"+str(a)+"使用过,单据保存失败,不允许二次采购!");
以上脚本中的这段
if SupplierDJ == "GYSDJ_SYS_003":
需要根据企业设置的供应商等级指定的值修改,按等级编码设置
配置方式
以上脚本保存时有提示报错,可以忽略。
配置过程中需要在采购订单的供应商基础资料字段中引用供应商等级字段
【实现效果】
参考文章:https://vip.kingdee.com/link/s/loC61
推荐阅读