用友U8 | 我是如何解决序列号状态出错问题的?
问题描述:
每次在审核或者弃审其他出入库单时,都会提示这种错误:xxx不符合当前单据约束条件或者不是来源于上游单据的,该序列号目前状态处于待入库,当前操作需要处于以下状态:xxx
(不限于这种情况,出错的情况有很多种,这里只是举例说明一下问题的展示效果)
原因分析:
下面讲一个例子:
背景:销售调出单(这个是二开的产品,非标准功能)原理应该也是同普通调拨单,以销售调出单为例来讲解
从商务整机仓(001)调拨到区域仓(100)
单据审核顺序:
审核:先审核出库、再审核入库
弃审:先弃审入库,再弃审出库
现在我们来查看一下后台是怎么展示的:
select AutoID,cInvCode,cWhCode,iSNState,iSNOperateCount,cInvSN ,* from ST_SNState WHERE cInvSN in('HME170220301011') select AutoID,cInvCode,cWhCode,iSNPreState,iSNOperateCount,iVouchsID,iVouchID,cInvSN ,* from ST_SNDetail_OtherIN where cInvSN in('HME170220301011') select AutoID,cInvCode,cWhCode,iSNPreState,iSNOperateCount,iVouchsID,iVouchID ,cInvSN ,* from ST_SNDetail_Otherout where cInvSN in('HME170220301011')
当出库、入库都审核完的状态为:
cwhcode(仓库) |
isnstate(状态) |
100(区域仓) |
2(在库) |
先弃审【入库】:弃审完为开立状态
此时【序列号状态表】为:
cwhcode(仓库) |
isnstate(状态) |
100(区域仓) |
1(待入库) |
先弃审【出库】:弃审完为开立状态
此时【序列号状态表】为:
cwhcode(仓库) |
isnstate(状态) |
001(区域仓) |
3(待入库) |
错误操作:
弃审出库:
此时序列号状态表为:
cwhcode(仓库) |
isnstate(状态) |
100(区域仓) |
3(待入库) |
过程不怎么操作什么了,就提示错误:xxx不符合当前单据约束条件或者不是来源于上游单据的,该序列号目前状态处于待入库,当前操作需要处于以下状态:xxx
就改成原始状态(这个过程只需要修改序列号状态表,其他2个表不用修改,数据是不变的)
update ST_SNState SET cWhCode='100',iSNState=2 WHERE cInvCode='2300100070'and cInvSN='HME170220301011'
然后再按正常的顺序弃审
要弃审什么:就把序列号状态表返回到:xx仓库在库
要审核什么:就把序列号状态表返回到:xx仓库待出库,再审核
总结:
操作及状态:
操作 |
仓库 |
状态 |
初始 |
001商务整机仓 |
3(待出库) |
①其他出库审核 |
100区域仓 |
1(待入库) |
②其他入库审核 |
100区域仓 |
2(在库) |
③其他入库【弃审】 |
100区域仓 |
1(待入库) |
④其他出库【弃审】 |
001商务整机仓 |
3(待出库) |