问题描述:
做调拨单,单据上存货数量为4,指定序列号的时候,只有2个序列号可选。如下图:
![U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件 U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件](http://img1.ph.126.net/Vks2_LUJSiJo1hxZHIuPZw==/6631441599655189132.png)
查询相关账表,结存数量为4,但是序列号结存数量为2。
解决过程:
1、从软件中导出序列号出入库流水账(过滤条件选好存货与仓库),入的导一个xls,出的导一个xls
2、将上述导出的xls导入到SQL中方便操作,入的导入表名为:SN_in;出的导入表名为:SN_out
3、使用以下语句查看有问题的序列号:
select a.序列号 as '序列号-入',a.次数 as 入次数,isnull(b.次数,0) as 出次数
from
(select 序列号,COUNT(*) as 次数 from Sn_in group by 序列号) a
left join
(select 序列号,COUNT(*) as 次数 from sn_out group by 序列号) b
on a.序列号=b.序列号
where a.次数<>b.次数
or b.次数 is null
4、上述语句执行结果如下:
![U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件 U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件](http://img1.ph.126.net/7zSamfTyLs-cm7UQlqrrZw==/6630402561166045216.png)
从上面的结果中可以得知,xuni736#02498、xuni736#02499 这两个是正常待出的,在指定序列号界面也能看到这两个序列号,而001006211048002074、001006211048002137这两个序列号是看不到的,这两个序列号入的次数分别比出的次数多1次,也就是说这两个序列号应该还可以分别出1次,加起来正好是数量4
。
5、在数据库中查看下这四个序列号的状态:
上述语句执行结果如下: 001006211048002074、001006211048002137这两个序列号的仓库是01,且序列号状态也不对。经过确认,这两个序列号的存货是不在01库的,应该在03select cInvSN,* from ST_SNState where cInvSN in ('001006211048002074','001006211048002137','xuni736#02498','xuni736#02499')
![U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件 U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件](http://img1.ph.126.net/XFdnuMQ_o-SdURNiAShPYA==/6631372330422601528.png)
6、使用如下语句,修改序列号信息:
7、之后在调拨单上指定序列号,已经可以看到了update ST_SNState
set cwhcode='03',iSNState='2'
where cInvSN in ('001006211048002074','001006211048002137')
![U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件 U8-存货结存数量与序列号可用数量不一致 - 似水无痕 - 用友软件](http://img1.ph.126.net/hQX5uVmEeTRogAtWkluPvw==/6631341544097004793.png)