用友软件股份有限公司呼叫中心169号坐席李春华2009年12月02日采购发票列表中的入库日期问题客户问题:890版本采购发票是参照采购入库单生成的,但是在采购发票列表中显示的入库日期和采购发票对应的采购入库单的入库日期不一致为什么?测试环境:WINDOWSXP+SP3补丁:没有打过任何890补丁采购发票日期为:2009-10-29,入库日期为:2009-10-30。采购发票联查对应的采购入库单,查看采购入库单的入库日期却为2009-10-29客户是通过手工结算的,将结算单删除后,重新结算使用自动结算发现自动结算后采购发票列表中显示的入库日期显示的就是对应采购入库单的入库日期采购发票的入库日期为:2009-10-29,为什么?难道采购手工结算和自动结算系统自动回写采购发票对应的入库日期时所取日期不一致?我们跟踪后台来看看,首先看手工结算时系统是如何自动回写采购发票的入库日期跟踪发现,手工做采购结算时系统自动取,当时登陆系统的日期回写采购发票的入库日期字段DINDATE和结算日期字段DSDATE,而不是取采购发票对应采购入库单的入库日期回写,所以有之前查询采购发票列表时的入库日期和对应采购入库单入库日期不一致的现象。UPDATEPurBillVouchsSETPurBillVouchs.iExMoney=0,PurBillVouchs.iLostQuan=0,PurBillVouchs.iNLostQuan=0,PurBillVouchs.iNLostMoney=0,PurBillVouchs.dInDate='2008-10-30',PurBillVouchs.dSDate='2008-10-30',PurBillVouchs.cCorInvCode=null,PurBillVouchs.cNLostType=null,PurBillVouchs.mNLostTax=0WHEREPurBillVouchs.ID=182008-10-30是我在结算时登陆软件的日期下面我们跟踪一下,自动结算时系统如何回写采购发票的入库日期:通过跟踪发现,采购结算自动结算时系统调用了一个存储过程PU_AUTOSETTLEBILLREFRD,此存储过程的脚本如下:……Set@dDateRD=(SelectdDateFromRdRecordINNERJOINRdrecordsONRdrecord.ID=Rdrecords.IDwhereAutoID=@RdsID)IFUPPER(@cSysID)=N'OM'……UpdatePBVSETPBV.dSDate=@sCurDayFROMPurBillVouchASPBVINNERJOINPurBillVouchsASPBVSONPBV.PBVID=PBVS.PBVIDWHEREPBVS.ID=@PBVsIDUpdatePurBillVouchsSetdInDate=@dDateRD,dSDate=@sCurDayWhereID=@PBVsIDif@@Error<>0Set@iBadMakePS=@iBadMakePS+1End……分析上面的语句,发现系统在结算时自动取结算时对应入库单中的入库日期回写到采购发票子表PurBillVouchs中的字段dInDate,所以使用自动结算后,查询采购发票列表的入库日期显示的就是和采购发票结算的采购入库单的入库日期。从上面的分析,很显然使用自动结算才可以满足客户的需求,所以告知客户使用自动结算,可以保证采购发票列表中的入库日期是采购发票对应采购入库单的日期。总结:1.采购发票列表中的入库日期是在采购结算时系统自动回写的,和采购发票是否是参照采购入库单生成没有关系。2.手工采购结算时系统自动取结算日期回写采购发票中的入库日期。3.自动采购结算时系统自动取采购发票结算时对应入库单的入库日期4.这里说的自动结算是直接在采购发票上点击结算按钮。扩展:经过测试发现委外、代管业务的自动结算和手工结算后,查询发票列表中的入库日期也存在同样的情况。