盘点单的数量取值问题用友软件股份有限公司姓名:牛春艳2010年07月22日问题描述总结分析过程客户问题:版本890,无补丁。盘点单中,自动带出的结存数量,与库存台账中结存数量不一致。注:库存台账中,审核后修改现存量的单据,已经审核。问题描述首先,确认盘点单中,各数量带出的基本条件:1、库存期初,必须审核,否则盘点的账面数量中,期初数据不计算在内;2、盘点单上的账面数量、调整出、入库数量,取的都是修改现存量时点之后的数量,即如果审核后修改现存量,必须把单据审核后,才能取到该部分数据。分析过程接着,先核对基本条件是否满足:分析过程已审核已审核确认条件:盘点单账面日期:2010-2-4盘点单盘点日期:2010-2-11库存台账:所有单据日期都是2010-2-4,并且其它入库单的审核日期是2010-2-10。无论单据日期,还是审核日期,都没有超出账面日期和盘点日期的范围。正常情况下,台账中的所有单据数据应该都统计在盘点单中。下面通过SQL语句跟踪,来分析原因?分析过程分析过程经分析,盘点时,产生三个临时表:tempdb..[TempSTAccount_UFIDA_NCY_0_Temp]—账面数据、tempdb..[TempSTAdjust_UFIDA_NCY_0_Temp]—调整数据、tempdb..[TempSTCheck_UFIDA_NCY_0_Temp]—账面+调整数据。分析过程首先,分析TempSTAccount_UFIDA_NCY_0_Temp的条件,由于条件比较长,截取一段最重要的条件:(casewhenisnull(rdrecord.cvouchtype,N'')=N'08'orisnull(rdrecord.cvouchtype,N'')=N'09'thenrdrecord.dveridatewhenisnull(rdrecord.cvouchtype,N'')=N'01'thenrdrecord.ddatewhenisnull(rdrecord.cvouchtype,N'')=N'32'thenrdrecord.ddatewhenisnull(rdrecord.cvouchtype,N'')=N'10'thenrdrecord.ddatewhenisnull(rdrecord.cvouchtype,N'')=N'11'thenrdrecord.ddateelserdrecord.ddateend)<=N'2010-02-04’----注:该段条件的含义:是指账面数量取值的判断条件是:由于其它出、入库单是审核后修改现存量,因此要求,只有当审核日期<=账面日期的出入库单数据计入账面数量中,即审核日期<=N‘2010-02-04’。而在本案例中,查看台账,有一笔其它入库单,单据日期是2010-2-4,但是审核日期是2010-2-10,因为该笔入库数据,在软件统计时,是不包含在账面数量中。那么,该笔数据是否应该包含在调整入库数量中呢?分析过程接着,分析TempSTAdjust_UFIDA_NCY_0_Temp的条件,同样截取一段最重要的条件:Rdrecord.dDate>N'2010-02-04'And(casewhenisnull(rdrecord.cvouchtype,N'')=N'08'orisnull(rdrecord.cvouchtype,N'')=N'09'thenrdrecord.dveridatewhenisnull(rdrecord.cvouchtype,N'')=N'01'thenrdrecord.ddatewhenisnull(rdrecord.cvouchtype,N'')=N'32'thenrdrecord.ddatewhenisnull(rdrecord.cvouchtype,N'')=N'10'thenrdrecord.ddatewhenisnull(rdrecord.cvouchtype,N'')=N'11'thenrdrecord.ddateelserdrecord.ddateend)<=N'2010-02-11'----注:该段条件的含义:是指针对其它出、入库单来说,要求单据的日期>账面日期,而且,审核日期<=盘点日期,只有在该范围之内的数据,才被统计在调整出、入库数量中。而在本案例中,那笔其它入库单,单据日期=账面日期,同样,不满足调整入库数量的取数条件,因此在调整入库数量中也反映不了该笔业务。分析过程针对审核后修改现存量的单据:账面数量取值的时间范围:当审核日期<=账面日期调整数量取值的时间范围:单据日期>账面日期AND审核日期<=盘点日期经过对比,发现这两个条件的判断纬度并不一致,账面数量是以审核日期判断;而调整数量却是判断单据日期+审核日期,并且逻辑也不严密。就像本案例中,当账面日期<审核日期<=盘点日期,而单据日期=账面日期时,该笔业务的数据,账面数量、调整数量都取不到。至于解决方案,目前还未出补丁,只能建议客户:单据一定要在盘点日期之前审核;并且,盘点单的账面日期与所有单据的日期不要在同一天。总结