客户的奇怪问题:删除其他入库单时提示:现存量不允许小于冻结量。客户此存货是存在批次管理的。涉及到的批号为210908112和210908121。指导客户查询现存量表,发现210908112的批号的现存量为7个,而210908121的现存量为0。但是有一行记录很奇怪,客户说是210908112和210098121放在一起,显示了一行记录,现存量为-7,无冻结量。为什么会出现这样的情况呢?指导客户整理现存量,现存量表显示结果依旧。客户的此张入库单是一张其他入库单。是由在库不良品入库单生成的。查看客户的此笔业务,在库检验单上的批号是210908112和210098121,数量为7个。全部是不良品,客户进行了不良品处理,7个全部降级,但降级以后的存货仍为此存货,只不过批号变为了210908112。审核不良品处理单后,生成了其它入库单。客户现在发现不良品入库单的一些记录做的有问题,想删除这张其他入库单,就发现存在此提示,不让删除了。注意:软件系统中,无论是按明细报检,还是按仓库报检。即使是同种存货,但批次不同,还是分行显示在报检单上的。并且在报检单生成检验单时。报检单上的每行记录体现在检验单上,都是不同的检验单。这下就有疑问了,客户的检验单上为什么批号会存在2个。查询批次账,终于发现客户此存货的批次中除了210908112和210098121,还有个210908112/210098121,是另一个批次编号。而此批次在现存量查询中是-7个。解决方案:指导客户先做一张其他入库单,把210908112\210908121录入10个。再删除质检生成的其他入库单。修改在库不良品入库单后,再重新生成其他入库单。把之前手工输入的其他入库单删除。其实此问题找到根源后,处理方案并不复杂。只是客户的编号设置比较奇特。影响了最开始的判断。正常情况在,在现存量查询中,系统是不会把2个批次的现存量显示在一行记录的。相关的另外一个类似小案例:90102是LP件+批次+质检属性的存货。做90102的其他入库单100个,查询现存量90102的现存量和可用量均为100个。做一张销售订单,数量为40个进行销售订单的预留。预留量为40.此时查询库存现存量:在库品待检表。如果存在订单库存,在此表中,能够看出结存数量和订单库存还是自由库存,这样在进行报检的时候,可以进行订单库存报检或者自由库存报检。此时,对销售订蛋糕1000000054的销售订单进行在库报检,报检数量为40个。并且40个全部是不良品。进行在库不良品处理单,将40个不良品分2种处理,其中30个降级,降级后的存货还是此存货,不过批次是201(之前批次是1),降级后数量为28.8,另外10个,做报废处理。审核此单据,并参照其生成201批次的生成其他入库单。在保存其他入库单的同时,系统自动生成了090102存货1批次的其他出库单30个。此时再查询库存管理的现存量:此时28.8个还能对应销售订单号1000000054.但如果在进行降级时,选择了降级后的存货为其他存货。就会发现1000000054的销售订单预留到了另一个存货090101上。而090102的存货系统也自动生成了一张其他出库单。此时查询销售订单1000000054的预留情况,已预留量为10,可预留量为30.(个人认为此处是一个BUG,因为此时即使对此销售订单进行释放的时候,可释放数量也只有10个。其余的29.9个,无法释放)如果出现这样的情况,只能从后台中把rds表中090101存货的订单号是1000000054对应的销售订单子表id去掉。通过企业管理其中查询1000000054的销售订单的isosidselectid,*fromso_somainwherecsocode='1000000054'--id=ID=1000000060selectiSOsID,*fromso_sodetailswhereid=1000000060--1000000105select*fromrdrecordswhereisodid='1000000105'会发现cinvcode为090101的存货中记录了销售订单1000000054的子表isodid号1000000105;由于无法在销售模块进行释放和关闭操作090101,想把此记录在现存量中由订单库存变为自由库存有2中方式:A、做盘点单,把090101的订单库存盘亏出库,再手工做一张其他入库单,变为自由库存进行入库:审核此盘点单,再查询后台语句,此时系统已经生成了一张其他出库单,并且对应存在isodid为1000000105:方法B、直接从后台删除建议后生成的其他入库单记录中的isodid后,再整理现存量即可。updaterdrecordssetisodid=nullwhereautoid='1000000585'整理现存量后,再次查询:总结:查询现存量时,很多时候涉及到LP件的存货记录都较奇怪。在进行后台数据查询中,可以从isodid不为空的记录进行查询。看是否存在线索。