子件发料不足问题的总结215号工程师问题来源:热线电话问题描述:872版本,委外入库单保存时,系统提示:子件发料不足,查看委外订单上子件的已领数量等于应领数量。问题现象:问题分析:看到此提示,我们一定可以推测到,委外管理的选项中控制了委外入库必先材料出库,而且应该是严格控制,那么我们也一定可以想到要查询看一下,委外订单中子件的已领数量与应领数量的关系。查看如下图:从上图可以看到,应领数量等于已领数量,但是委外入库单还是不可以保存。那么系统的控制不是按照应领和已领数量进行控制的吗?我们后台跟踪看看。insertintotempdb..UFIDA_GHOST_0_OmVerifyTable1(iposid,iquantity,irow)selectiomodid,sum(1*convert(decimal(20,6),isnull(iquantity,0))),0fromrdrecordswhereid=10000580groupbyiomodidIFEXISTS(SELECTTABLE_NAMEFROMtempdb.INFORMATION_SCHEMA.TABLESWHERETABLE_NAME='UFIDA_GHOST_0_OmVerifyTable2')DROPTABLEtempdb..[UFIDA_GHOST_0_OmVerifyTable2]selectiposid,convert(decimal(20,6),sum(isnull(iquantity,0)))asiquantity,convert(int,0)asirowintotempdb..[UFIDA_GHOST_0_OmVerifyTable2]fromtempdb..UFIDA_GHOST_0_OmVerifyTable1groupbyiposidselectdistinctt.irow,s.cinvcodefromtempdb..[UFIDA_GHOST_0_OmVerifyTable2]tjoinom_modetailssont.iposid=s.modetailsidjoinom_momaterialsmons.modetailsid=m.modetailsidwherem.iwiptype=3and((isnull(s.iReceivedQTY,0)+isnull(t.iquantity,0))*isnull(m.iquantity,0)/s.iquantity)>(isnull(m.isendqty,0)-isnull(m.iComplementQty,0))跟踪查询结果,可以看到,系统在进行判断时,是按照已领数量减去补料数量来进行判断的。则针对此例,再次查看委外订单中委外用料单,查看补料数量。如下图。重新查看委外用料单,可以查看到子件1005有补料量为3,系统判断时按照已领数量减去补料数量进行判断,则领料不足,那么再参照委外订单做材料出库单时,是什么情况呢?实际上子件1004并没有参照委外订单领料完全,还有3个未领料量。已领数量为5,是由于参照委外订单进行的补料操作,系统也将补料数量统计到已领数量中,但是在进行判断时,系统按照已领料量减去补料数量进行判断。此种情况下一定要注意查看补料数量字段。至此找到问题原因,就是没有正常参照委外订单进行领料,而是通过补料的方式领料,导致委外入库单无法保存。找到问题原因,解决很简单,如果实际上并不需要补料,可以参照委外订单做红字补料单,然后正常参照委外订单进行材料出库,再进行委外入库即可。问题延伸:对于生产订单中,也是同样的情况,也可以参照生产订单进行补料。在库存管理中,如果进行领料比例控制,则也可能出现此种情况。生产订单中子件的已领料量中也包含补料数量,则在产成品入库单保存时,也有可能出现此种问题,此时也是去查看生产订单子件中的补料数量,应该就是进行了补料,正常的领料没有领完导致。890版本上的测试情况也是一样,都是进行如上的控制方式。