【客户需求】设置月份用字母表示参与批号/序列号编码(python)原创
金蝶云社区-陈元喜
陈元喜
4人赞赏了该文章 934次浏览 未经作者许可,禁止转载编辑于2021年11月12日 09:27:07

如何设置月份用字母表示参与批号/序列号编码规则


参考思路:

  1. 单据上增加文本字段、编写插件实现日期对应的字母赋值给该文本字段。

  2. 编码属性中,增加该文本字段的属性,映射对应单据上增加的该文本字段。

  3. 编码规则中,引用上述增加的文本编码属性,即可实现编码规则以字母形式表示月份参与编码。


实现步骤:

(下面以 采购入库单 为例月份 1~12 表示为 A~L,详述具体实现步骤)

  1. BOS设计器-采购入库单,增加文本字段(标识:FText )。可根据业务调整其可见性、锁定性。image.png

  2. BOS设计器-采购入库单-表单插件-注册Python插件。实现修改入库日期时,填充对应字母至增加文本字段。

    image.png

  3. 系统-批号/序列号属性,增加文本属性-设置对应单据对应字段。

    image.png

  4. 系统-批号/序列号规则,设置增加的文本属性参与编码。

    image.png

  5. 系统-采购入库单,录入物料获取批号,验证是否满足需求。

    image.png



补充说明:

  1. 上述以采购入库单为例,其他单据实现按同样步骤即可。

  2. 关于月份字母表示形式,可以自行调整Python中字典swithcer 对应的具体字母即可。

  3. 下面提供上述步骤二中Python代码。注意:系统日期字段(标识:FDate)、二开本字段(标识:FText)。

import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from System import *
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Bill import *

def DataChanged(e):
	if(e.Field.Key.Equals("FDate",StringComparison.InvariantCultureIgnoreCase)): 
		date = this.View.Model.GetValue("FDate")  
		this.View.Model.SetValue("FText",switch_case(date.Month))

def AfterBindData(e):
	if (this.View.OpenParameter.Status == OperationStatus.ADDNEW):
		date = this.View.Model.GetValue("FDate")
		this.View.Model.SetValue("FText",switch_case(date.Month))
		
def switch_case(num):
    switcher = {
        1: "A",
        2: "B",
        3: "C",
        4: "D",
        5: "E",
        6: "F",
        7: "G",
        8: "H",
        9: "I",
        10: "J",
        11: "K",
        12: "L",
    }
    return switcher.get(num, None)





赞 4