委外入库单不能记账问题原因总结215号工程师问题描述:890版本,委外入库单在正常单据记账中过滤出来为灰色,无法记账。查询采购入库单有对应的核销单,并且对应的材料出库单已经记账。问题分析:看到问题描述,指导用户查询委外核销单,可以查询到此张采购入库单与两张材料出库单进行的核销,其中一张材料出库单上的单价和金额为空。查询此张材料出库单确实在上个月已经记账,存货明细账中有这张出库单记录,但是单价和金额显示显示为空。导致本月进行核销后,没有材料费。通过简单分析,找到问题原因,由于委外入库单上没有材料费,导致在记账时置灰,不能记账。客户不能恢复上个月份的记账,重新将材料出库单记账。那么只能是远程帮助调整后台数据库了。那么远程调整,修改rdrecords表中的imaterialfee字段,加上了材料费,再过滤记账即可。可是当修改了rdrecords表中的imaterialfee字段后,再进行过滤时,单据还是置灰的不能记账。再检查一遍修改的材料费,没有问题。那么为什么还是不能记账呢?委外入库单记账时不就是要判断材料费吗?都已经增加了材料费,为什么还是不能记账呢?看来记账过滤时,应该还是判断了其他的过滤条件了?那是什么过滤条件呢?只能跟踪看看了。下张ppt中摘出跟踪结果中关于采购入库,业务类型为委外加工的筛选条件。update#IA_GUI_Datasetbaccflag=1wherebrdflag=1andcVouType<>10and(iquantity>=0orcvaluetype<>N'个别计价法')andipriceisnullandleft(cbustype,2)notin(N'调拨',N'组装',N'转换')and(cvaluetype<>N'计划价法'andcvaluetype<>N'售价法')goupdate#IA_GUI_Datasetbaccflag=1from#IA_GUI_DataiainnerjoinRdrecordsrdsonrds.AutoID=ia.idwherecbustype=N'委外加工'andia.imaterialfeeisnullgoupdate#IA_GUI_Datasetbaccflag=1from#IA_GUI_Datainnerjoinom_matsettlevouchsON#IA_GUI_Data.ID=om_matsettlevouchs.irdsidAND#IA_GUI_Data.cvoutype=N'01'ANDom_matsettlevouchs.cvouchtype=N'01'INNERJOINom_matsettlevouchonom_matsettlevouch.MSID=om_matsettlevouchs.MSIDWHERE#IA_GUI_Data.cbustype=N'委外加工'ANDisnull(om_matsettlevouchs.iSettleState,0)<>2ANDom_matsettlevouch.dDate<='2009-11-30'从上张ppt中的跟踪结果,可以看出,对于委外入库单,有三个条件限制单据是否可以记账。1,判断rdrecords表中的iprice字段。如果此字段为空,则不允许记账,也就是单据上的金额不能为空。2,判断rdrecords表中的imaterialfee字段。如果此字段为空,则不允许记账。也是就是材料费不能为空。3,判断om_matsettlevouchs表中的iSettleState字段,此字段的值必须为2,才可以对应的入库单记账。从跟踪出来的三个条件分析,对于第二个条件,已经调整过了,那么其他两个条件呢?首先检查om_matsettlevouchs表中的isettlestate字段,发现单价和金额为空的行,对应的此字段也是1,而不是2.同时再检查rdrecords表中委外入库单的iprice字段,此字段也是为空。至此,找到问题所在的所有原因了。解决方案:由于已经通过跟踪分析找到问题原因,解决很简单。1,修改rdrecords表中的imaterialfee字段2,修改rdrecords表中的iprice字段3,修改om_matsettlevouchs表中的isettlestate=2总结:对于委外入库单不能记账,通常我们认为是系统会判断是否有材料费,如果有材料费应该就可以记账。而常常我们遇到的情况也都是如此,则给我们形成了思维定式,认为就是判断材料费。而对于这次的这个问题,是刚好系统判断的三个条件,都没有满足,导致委外入库单不能记账。通过跟踪分析,发现委外入库单记账的判断条件,不只是判断了材料费,同时判断入库单上的金额,以及委外核销单上的核销状态。总结此案例,希望对其他同事日后处理问题有所帮助。