自动锁库解锁服务简介

在金蝶云星空版本 PT-146906 [8.0.0.202203](构建号:8.0.186.8,发布时间2022.3.31) 中,应相关客户提单需求,添加了自动锁库解锁服务,本服务通版默认在发货通知单中的审核(审核时锁库自身单据),反审核,作废(反审核时或作废时解锁自身单据),直接调拨单中的审核(审核时先解锁上游发货通知单锁库信息再锁库自身单据),反审核,作废(反审核时或作废时解锁自身单据),销售出库单的审核(审核时解锁上游发货通知单和直接调拨单锁库信息)操作上已经配置好了,但默认都没有启用,客户可根据需要成对启用(这里建议客户要成对启用,比如发货通知单审核操作上启用了锁库,那么反审核,作废操作上就要启用解锁),也可以参照类似的配置应用到其它二开单据上。本服务将锁库和解锁功能集成在一起,通过'锁库/解锁类型'下拉框 动态地启用或禁用相关控件,锁库的服务配置如下图1-1所示:

图1-1
在上图中,1,左侧为库存匹配维度字段设定,必选字段在锁库时必须配置,如果维度配置了,且对应单据在相关维度上有值,则为精确匹配。举个例子,假设发货通知单审核操作挂了自动锁库服务,其配置界面把仓库维度设定为发货通知单的出货仓库,那么如果发货通知单的出货仓库为仓库甲,且即时库存有仓库甲的数据,则锁库能够锁成功(其它维度也要对应),如果即时库存没有仓库甲的数据(但有其它仓库的数据),则锁库不成功;2,右上角的配置在锁库时仅显示和启用复先框'允许部分锁库',其它三个配置'解锁上游单据','上游单据体标识','下游单据体标识'不可用(后面会解析其作用),勾选'允许部分锁库',则在库存量不足时可部分锁库,不勾选时则锁库不成功;3,右下角的配置用于设置锁库标识和数量相关字段(这些字段可以不用填写),即锁库成功后,对应的锁库标识,锁库数量,待锁库数量 字段会更新(此处严禁配置成单据的主数量,比如有些客户在发货通知单上配置锁库基本数量字段为销售基本数量,这种是错误的,如果发货通知单是10个销售基本数量,即时库存有4个且允许部分锁库,那么锁库成功后就会导致销售基本数量变成4)。
解锁的服务配置如下图1-2所示:

图1-2
上图中配置的解锁服务中,1,左侧的'库存匹配维度字段设定'会多显示一列'解锁严格匹配'配置,此列用于在下游单据操作上配置解锁上游单据的锁库信息时是否严格匹配相关维度,如果是解锁自身单据,则解锁严格匹配字段配置就没有作用。举个例子,假设发货通知单上锁了甲仓,发货通知单下推销售出库单时如果将销售出库单上的仓库修改为乙仓,那么在销售出库单审核操作上挂的解锁发货通知单上的锁库信息时,如果解锁严格匹配仓库字段,那么就解锁不了,因为仓库不一样,建议根据需要解锁时按仓库和数量严格匹配,默认通版是按下游的真实数量解锁上游,因此基本单位数量是解锁严格匹配的,举个例子,发货通知单锁库了10个,但是出库时只出了3个数量,那么销售出库单审核时只会解锁发货通知单上的3个数量的锁库信息;2,右上角的配置在解锁时三个字段可以配置,'解锁上游单据'可以配置下游单据上的某个操作解锁上游锁库信息(目前仅支持解锁上游单据为供应链和制造领域的单据),当然这里也可以配置成解锁自身单据的锁库信息(可以为空不填,为空时就代表解锁自身单据);3,右下角的锁库标识和锁库数量是依据解锁上游单据上的字段而不一定是本单据上的字段。
发货通知单的审核操作配置的服务如下图2-1所示:

图2-1
发货通知单上的反审核及作废操作配置如下图2-2和图2-3所示:

图2-2

图2-3
直接调拨单上的审核操作配置的服务如下图3-1所示:

图3-1
上图3-1中解锁上游发货通知单上的维度大部分取至调出维度,比如调出仓库,调出BOM等,而自身锁库时大部分取至调拨单上的调入维度,直接调拨单上的反审核及作废操作配置如下图3-2和图3-3所示:

图3-2

图3-3
销售出库单上的审核操作配置了两个解锁上游单据服务,分别用于解锁发货通知单和直接调拨单,此服务要放到预留关系释放服务之前,如下图4-1所示:

图4-1
注1:上面所有单据的服务配置中的,有个上游单据体标识和下游单据体标识,这两个字段仅在下游解锁上游且满足特定的条件才需要配置,通版默认都没有配置值,这是可行的,提供此参数主要是为了兼容二开单据或通版多个下游单据的上游单据。举个例子,销售订单作为上游单据时,可能存在使用销售订单上的明细信息下推发货通知单,也可能存在使用销售订单上的收款计划下推收款单,这时 T_BF_TABLEDEFINE 对于FFORMID为 SAL_SaleOrder 时就有多个记录,FTABLENUMBER 分别为 T_SAL_ORDERENTRY 和 T_SAL_ORDERPLAN,如果要在下游解锁上游销售订单上的锁库信息时,就需要提供表T_BF_TABLEDEFINE 中 FENTITYKEY 列对应的值,比如收款单审核时解锁上游销售订单上的锁库信息时需要提供上游单据体标识值:FSaleOrderPlan,如果是发货通知单审核时要解锁上游销售订单上的锁库信息时需要提供上游单据体标识值:FSaleOrderEntry,当然由于通版在销售订单上已经存在了自动锁库功能,且在销售出库单审核时会自动释放销售订单上锁库信息,因此没有必须去销售订单上配置此服务或下游配置解锁销售订单上的服务,这里只是举个例子,如果客户二开的单据或扩展通版单据遇到 T_BF_TABLEDEFINE 表有多个记录时则需要在解锁上游单据时对应地配置好这两个字段,如果上下游单据在表 T_BF_TABLEDEFINE 只有一个记录,则可以不用配置这两个字段,表中的数据试例如下4-2所示:

图4-2
锁库日志记录了此服务对应的一些详细信息,通过需求备注和解锁备注字段可以大致看出一些操作细节,如下图4-3所示:

图4-3
存在的问题:
1,由于服务内部执行顺序的特殊性,在操作中配置的服务顺序不完全等于其真实执行顺序, 因此本服务可能存在与其它服务(比如库存更新搜集服务, 负库存检查服务,预留关系转换服务,预留关系释放服务)有冲突的情况。举个例子,由于锁库和预留共用同一套表结构,锁库时可能存在与预留有冲突。目前通版销售订单可能存在MRP运算产生预留或锁库信息,因此通版在发货通知单审核时,如果在发货通知单上启用了自动锁库服务,且发货通知单上的上游销售订单如果已经存在预留或锁库信息,则发货通知单上也不会锁库。如果销售订单没有MRP运算产生的预留或锁库信息,则发货通知单就会锁库成功,但如果发货通知单上锁库成功后在销售订单上又再做MRP运算导致订单上有预留则会存在多锁库的情况,客户应当留意并避免或者手工去库存锁库列表中解锁。另外本服务解锁时可能存在与预留关系释放服务有冲突的问题,二开配置时需要客户自行决定启用哪个服务。以销售订单->发货通知单->销售出库单为例(订单不锁库,发货通知锁库,出库单解锁库存且释放预留),预留是认为MRP需求单据才存在预留的,在发货通知单锁库后,预留释放服务无法感知(如果发货通知单是销售订单下推的,通知单下推销售出库,预留服务是以销售订单出库的,会释放销售订单预留,但是无法释放通知单的;如果手工新增的发货通知单为源头单据,预留找不到源单就直接以通知单出库了,这时会释放通知单的预留,所以要是在销售出库单审核操作启用了解锁上游发货通知单的服务,则应停用预留关系释放服务)。
2,发货通知单列表中的'变更数量'操作由于其特殊性(它是一个空操作,在插件中使用了模拟View更新数量),且其中的变更数量校验逻辑是写在列表插件中的AfterDoOperation方法中,此操作目前不建议在上面配置解锁或锁库服务(如果强制配置解锁或锁库操作,可能导致变更数量校验失败,但是却解锁了),建议通过在单据菜单或列表上重新挂一个空操作菜单并在空操作的服务端服务上配置自动锁库解锁服务(后续通版有计划兼容变更数量逻辑)。
3,下游操作解锁上游锁库信息时,目前配置界面上的解锁上游单据字段默认只能是供应链和制造领域的单据,如果是其它领域的单据,则需要手工输入单据的formId值(BOSIDE 中单据的唯一标识,注意不能是单据的名称)。另外如果是上游合并下推到下游单据,则下游单据解锁上游锁库信息时可能会多解锁。
4,锁库或解锁时物料,数量,单位等是必录字段且必须在分录(即单据体上的字段,如果是子单据体上的字段,可能会导致下游解锁上游不成功)上,锁库操作会排除已经锁库的数量,比如在发货通知单保存操作上配置了锁库,则首次保存一次操作,会锁库一次,后续再点保存,会排除此发货通知单已经锁库的记录,因此再次保存时不会锁库。
5,本服务目前版本不会对操作结果进行干预,也不会对锁库结果进行提示,比如某个单据审核操作上挂了锁库服务,但是可以能因为库存可用量不足导致锁库失败,那么即使锁库失败了也不会影响审核操作,也不会提示锁库失败了,如果要查看锁库失败原因,则需要启用下文中的日志文件功能。
日志文件启用功能简介(仅适用于2024年1月之前版本):
如果发现锁库服务没有按预想的执行,可以向对应账套数据库中添加相应脚本后清除缓存(此脚本建议仅用于分析,如果分析没有问题后建议删除此脚本对应的记录以精减日志文件大小)
INSERT INTO T_BAS_SYSTEMPROFILE(FCATEGORY,FORGID,FACCOUNTBOOKID,FKEY,FVALUE,FACCTPOLICYID,FACCTSYSTEMID) VALUES('SAL',0,0,'AutoLockStkLog','TRUE',0,0);
通版在有上面的脚本时会在日志文件中记录详细信息, 可以在日志文件(日志文件通常在金蝶云星空安装目录:X:\Program Files (x86)\Kingdee\K3Cloud\WebSite\App_Data\Log )中通过关键字 AutoLockOrUnlockStockService Log Msg 搜索,如下图5-1所示:

图5-1
提单分析及解决方案:
1,库存锁库列表不显示某些单据的锁库信息,这个是因为通版添加的自动锁库解锁服务只显示了销售订单,发货通知单,直接调拨单等,此问题可以通过修改 视图 V_PLN_LOCKSTOCK来实现(在视图最后的 OR T1.FDEMANDFORMID IN ('STK_Inventory', 'SAL_SaleOrder') 从句中 添加需要的单据即可),或者升级补丁至2022.08月版本。
2,有客户提单反馈下游某个操作时解锁上游单据不成功,如果通过上面的日志文件发现记录有类似以下日志:无流程数据,上游表[XXXX], 下游表[YYYY,ZZZZ](其中的XXXX,YYYY,ZZZZ分别代表上游表,下游表,下游单据体标识),则说明二开的流程与通版有冲突,需要在解锁服务配置界面中配置好
自动锁库解锁服务简介
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



