本文档详细介绍了批号管理在库存系统中的使用流程和配置方法。首先,通过配置批号编码规则和物料属性来支持批号的生成和管理。其次,描述了批号编码规则的灵活性和自定义性,以及批号属性与单据类型的关系。此外,还介绍了批号主档的作用和构成,以及批号字段设计器的使用方法和注意事项。最后,详细阐述了与批号相关的服务端服务,如保存、删除、作废和反作废时批号流转记录的处理,以及入库时自动编码获取批号和批号捡货等功能的配置和使用方法。整体上,文档为用户提供了全面且细致的批号管理操作指南。
一、批号使用说明
批号使用整体流程
1、为入库业务单据配置批号编码规则,指定批号文本的生成方式
2、设置物料属性,为物料配置编码规则
3、业务单据上录入批号文本或获取批号或选择已有批号,生成批号主档
4、即时库存、库存余额、报表等使用批号文本和批号主档
二、批号编码规则
满足为入库类单据生成批号文本的需求,支持单据字段取值,格式设置,补断号等;
批号属性也就是构成批号的元素,批号属性可以自定义,支持常量、流水号、单据上的基础资料、日期、文本等字段,批号属性支持的数据来源范围可以通过修改配置视图V_LOTCODEITEMSOURCE扩充;
批号属性与单据类型相关,需要为批号属性指定对应业务单据的数据来源字段,系统已预置了一些批号属性,批号属性所支持的单据范围需要通过单据模型的枚举类型来修改
批号编码规则指定批号文本的各个组成部分和各部分在各业务单据上的数据来源;批号编码规则设置到物料上;
三、物料属性
库存属性里的:启用批号管理、启用保质期管理、保质期是批号附属信息、批号编码规则
这些属性影响业务单据上批号字段的锁定性、数据来源以及必录属性;
四、批号主档
批号主档是为了记录批号文本所附属的在所有使用它的业务单据间相同或累计的信息而创建
批号主档包括文本附属信息、批号的业务单据流转信息和保质期信息等;
批号主档以使用组织+物料+(编码)批号文本+业务类型作为唯一约束;
业务类型包括:1、库存;2、非库存;
非库存类批号主档在列表和查询界面不可见,记录主档只是为了适应基础资料类型字段、补断号以及后续版本功能使用
五、批号字段
设计器的工具箱“业务字段”里有“批次”类型字段;
批次字段继承自“基础资料”类型字段,在基础资料类型字段基础上增加了录入模式和校验规则等特殊属性;
批号字段属性
功能点 | 注意事项 |
后台物理字段 | 除了像普通基础资料字段一样要创建一个Int类型的字段保存Id外还要创建一个文本类型的字段保存批号文本(长度255) |
批次录入模式 | 仅文本:不能查询已有批号主档,只能手工录入文本,建议慎用 批号主档与文本:可查询选择已有批号主档也可手工录入文本,系统会自动同步 仅批号主档:只能选择已有批号主档,不能新增新批号 |
对应物料属性 | 控制字段,控制批号字段的一些行为和属性 实体服务规则: 物料是否启用批号:控制批号字段的锁定于解锁,修改物料,清空批号 物料是否启用保质期管理:控制生产日期和有效期至是否必录,修改物料,清空生产日期、有效期至 使用“通过日期单位计算日期”服务根据物料保质期设置由生产日期计算有效期至
|
使用组织 | 组织隔离,批号主档相当于能做类似自动分配的处理(单据保存时处理) |
必录属性 | 一般不需要设置,勾选“启用批号校验”并按照要求设置后会有通用服务按照物料是否启用批号管理执行检查 |
值更新事件 | 配置“携带批号主档的保质期信息”服务,在物料的保质期是批号附属信息选中时从批号主档携带生产日期和有效期至 |
启用批号校验 | 单据保存时执行批号和有效期至数据合法性校验 |
批号关联字段和校验设置 | 批号校验的详细设置:
辅助组织字段:当批号有效性检查的组织不是使用组织是需要设置 生产日期、有效期至:保质期校验的关联字段
检查批号有效性、检查有效期至有效性:可按需配置,不勾选时不检查该项 批号和保质期必录条件:物料启用属性为强制条件 生效状态:预留扩展选项 允许创建新批号:单据可使用批号主档不存在的批号 作废使用条件:单据选项勾选允许使用作废批号时该条件生效
|
批号校验的详细设置
六、相关服务
1、单据保存时保存和更新批号主档---------服务端服务:“保存并更新批号主档”
单据保存时根据单据界面录入的批号文本生成批号主档,反写单据批号ID并更新批号主档相关字段、状态和追踪信息
设置批号主档和业务单据的字段映射关系;
设置单据记录批号流转的条件,不设置则一直记录;
设置订单类型、跟踪方向、跟踪方向条件等,满足条件按照设置方向更新,不满足则为反方向
批号主档单据头字段更新采用覆盖方式,只有对应单据字段的值不为空时才会更新
需要将批号字段设置为保存操作后更新,因为保存操作会更新该字段的值
2、单据删除时删除批号流转记录----------服务端服务:“删除批号跟踪信息”
单据删除时,删除对应批号主档中记录的流转记录,在批号主档所有的流转记录被删除后标记批号为断号,如果批号主档是由批号编码规则产生的,在下次获取批号时满足条件的断号批号会被重新启用
3、单据作废和反作废时处理批号流转记录-------服务端服务:“作废批号跟踪信息”
单据作废和反作废时单据分录对应的批号主档里的单据流转记录也需要标记已作废或者未作废,如果一个批号主档的所有流转记录都已经作废,那么批号主档也标记未作废
4、单据界面操作时搜集并更新批号断号---------公共表单插件:Kingdee.K3.SCM.Stock.Business.PlugIn
插件处理界面修改批号时记录之前使用的批号,在保存时将不使用的批号标记为断号
5、入库时自动编码获取批号-------单据转换表单服务策略“批号编码规则应用”
源单启用批号管理的物料没有录入批号,在下推生成入库类单据时自动根据物料的批号编码规则生成新的批号(或者重拾断号),目标单需要在支持批号编码规则字段取数的范围内
6、批号捡货-----------单据转换表单服务策略“批号捡货”
字段映射:设置批号捡货相关字段在目标单的位置
过滤:该字段在执行捡货时是否参与过滤
返回:查询到符合条件的即时库存反填单据分录时是否填写该字段的值
排序字段设置:查询到即时库存决定出库顺序时使用的排序规则
单据关联标识:用于拆分时改写目标单据的Link单据体的数据,否则会导致关联关系错误
基本单位数量控制字段:关联反写控制字段
基本单位需求数量字段:应发数量,即源单总共需要的数量字段
捡货结果标识字段:单据分录记录捡货结果的字段,无物料、无库存、正常、未捡货等
排序规则:对系统参数和排序字段设置的使用方式
总是执行捡货:不管参数和排序字段有没有设置,总是执行捡货,能得到排序规则则按规则排序,否则就按即时库存内码排序
7、无源单捡货-------------服务:“无源单批号捡货”
出库类单据在录入物料后自动根据该服务设置从即时库存中查询满足条件的一条数据并将对应信息更新到当前分录上
七、批号字段使用指南
如果需要,则将单据的“用户参数对象”属性修改为BOS_LotBillUserParameter,设置含有允许使用作废批号选项的选项设置对象
设置物料字段和组织字段
拖出来批号字段,根据上述表格设置批号字段属性和校验设置等
设置生产日期、保质期、保质期单位字段
配置实体服务规则,根据物料属性控制批号、生产日期、有效期至的锁定性和清空动作
配置实体服务规则,使用“通过日期单位计算日期”通过生产日期计算有效期至
如果需要则配置实体服务规则 ,使用“携带批号主档的保质期信息”,在物料的保质期是批号附属信息选中时从批号主档携带生产日期和有效期至
为保存操作配置服务端服务“保存并更新批号主档”,注意配置在后续使用业务单据批号字段值的服务之前,如库存更新服务等,也即先生成,别人才能用
为删除操作配置服务端服务“删除批号跟踪信息”,注意配置在还要使用业务单据批号字段值的服务之后,如库存更新服务等,也即先让别人用,再执行删除
为作废和反作废操作配置服务端服务“作废批号跟踪信息”
如果需要则为单据配置公共插件“Kingdee.K3.SCM.Stock.Business.PlugIn”
在需要的单据转换路线上配置“批号编码规则应用”服务
在需要的单据转换路线上配置“批号捡货”服务
A “批号捡货”服务需求数量来自“基本单位需求数量字段”对应的单据字段,该字段必须有值
B “批号捡货”服务仅处理基本单位数量字段值的更新,需要在该服务后配置根据基本单位数量计算常用单位数量和辅助单位数量的服务
14.在需要的单据批号字段的值更新事件中配置“无源单批号捡货”服务
注意:
如果需要在单据未完成保存操作前操作批号字段的数据,需要以文本为准;
即时库存表中对于批号主档的记录和其他分配型基础资料一样,记录的是MasterId,另外即时库表只会使用业务类型是1(库存)的批号主档,不会使用业务类型是2的批号主档,业务类型为2的批号主档只存在于后台物理表中,不在系统中体现
对批号字段值的读操作方法
A 客户端
this.View.Model.GetValue(),得到的值的类型与录入模式有关
B 服务端或直接操作DynamicObject最好先获得批号字段
lotField.DynamicProperty.GetValue()
lotField.RefIDDynamicProperty.GetValue()
lotField.TextDynamicProperty.GetValue()
4.对批号字段值的更新操作方法
A 客户端
this.View.Model.SetValue(key,value,rowindex),value根据录入模式取文本或批号主档对象
B 服务端或直接操作DynamicObject最好先获得批号字段
lotField.DynamicProperty.SetValue()
lotField.RefIDDynamicProperty.SetValue()
lotField.TextDynamicProperty.SetValue()
推荐阅读