本文介绍了批号编码最大流水号表T_STK_MATERIALLOTCODES的维护逻辑,包括获取和更新流水号的方式,考虑物料和组织的区分情况。还涉及流水依据字段说明、内码种子值的管理,以及批号断号补号的处理逻辑,确保批号编码的连续性和管理灵活性。
批号编码最大流水号表T_STK_MATERIALLOTCODES,获取批号/序列号时会维护该流水号表,先从表中根据流水依据获取最大流水号,如果记录存在,就在流水基础上增加,如果不存在,就插入新的流水依据,起始值就是编码规则里设置的起始值,即修改起始值只对新插入的流水记录有效,对已存在的流水记录无效。查询和更新时会考虑是否区分物料、是否区分组织,如果编码规则设置为不区分,则这两个字段不作为查询最大流水号和更新流水号语句的执行条件。
其中流水依据包括以下内容
FMATERIALID 物料的MasterId,可选区分维度,取决于编码规则是否勾选物料作为编码依据,如果不勾选,则在 获取和更新最大流水号时忽略该维度,新插入的流水记录,该字段取当前单据对应物料
FORGID 组织,可选区分维度,取决于编码规则是否勾选组织作为编码依据,如果不勾选,则在 获取和更新最大流水号时忽略该维度,新插入的流水记录,该字段取当前单据对应组织
FLOTCODERULEID 编码规则内码
FBYVALUE 编码规则分录中勾选了编码依据编码项目的组合值
FCATEGORY 编码类型,1:批号,2:序列号
FNUMMAX 当前最大流水号(已使用)
如果对应的物料+组织+编码依据的数据不存在,则需要插入流水号数据,插入时需要注意内码来自对应序列表的种子值Z_STK_MATERIALLOTCODES,在使用新的内码后需要同步维度该序列种子值。可以通过往Z_STK_MATERIALLOTCODES表插入数据再删除的方式增长种子值,注意保持该表为没有数据的空表,否则系统功能会因为得到不足够数量的内码而报错。SQL库也可以通过DBCC CHECKIDENT('Z_STK_MATERIALLOTCODES', noreseed)查询现在的种子值,通过 DBCC CHECKIDENT('Z_STK_MATERIALLOTCODES', reseed, 新种子值)直接修改序列种子值。
批号支持补断号,批号编码状态表T_BD_LOTCODEVALUE记录获取到批号后的使用状态,字段FBIZSTATUS值,1:正常,2:断号。
库存参数不勾选”不启用批号断号补号处理“,如果批号编码是断号,且批号编码+物料对应的批号主档都没有追踪信息,则下次相同物料获取批号时会优先使用最小的断号,数量不足的再增加流水号。
推荐阅读