|
问题现象:在用友U8erp系统中用友U8版本号:U8软件的供应链产品线销售管理模块出现如下问题:U8销售系统发货结算勾对表当以不同的时段查询时,有时能查到数据,有时则不能。请帮忙解答!
原因分析:用户有退补业务,因退补业务不减实际库存,当退货单保存时,数量不写入DispatchLists的iQuantity字段而是写入TBQuantity字段,iQuantity字段值为0,查询发货结算勾对表时,当查询时段包含了退补业务时,Sa_MoveOutIncome存储过程产生除0错误而查询不到数据,当查询时段不包含退补业务时则正常。
解决方案:在用友erp 系统版本U8软件中此为Sa_MoveOutIncome存储过程未考虑到退补业务的特殊性而产生的错误,修改Sa_MoveOutIncome如下即可解决问题:/*版本:U821当有退补业务时发货结算勾对表查询无数据江苏省药材公司2003.06.27当发货单关闭时发货结算勾对表未结数量为0而当退货单关闭时发货结算勾对表未结数量为退货数量江苏省中医药科技发展总公司2003.07.18南京用友维护部丁德安与U821年结补丁:821发货结算钩对表补丁(修改上年发货数据没有减问题).sql相结合2004.1.31南京用友维护部丁德安*/CREATEPROCEDURESa_MoveOutIncome(--取得发货明细账存储过程作者:刘小东--@chrtablevarchar(200)=null,--保存发货结算勾兑明细临时表--@chrWhere1varchar(255)=null,--查询条件名称--@chrOutDatevarchar(100)=null,--发货日期--@chrSaleDatevarchar(100)=null,--开票日期--@chrVouchTypevarchar(100)=null--单据类型--)ASdeclare@chrSQLvarchar(8000)declare@chrCostvarchar(50)declare@chrWherevarchar(1000)declare@chrstartDatevarchar(50)declare@chrstartDate1varchar(50)declare@chrstartdate2varchar(50)ifltrim(rtrim(@chrwhere1))='newReport_ParameterFromTempTable'begin--条件参数通过临时表传递--set@chrwhere=(selectnamefromtempdb..newReportParameter)endelse--条件参数直接传递--beginset@chrwhere=rtrim(ltrim(@chrwhere1))end--取销售系统启用日期--set@chrStartDate=(selectisnull(cValue,'1900-01-01')fromaccinformationwherecSysid='Sa'andcName='dStartDate')if@chrstartdate''beginiflen(ltrim(rtrim(@chrstartdate)))='''+@chrstartdate+''''set@chrstartDate2='andSalebillVouch.dDate>='''+@chrstartdate+''''endifexists(select*fromtempdb..sysobjectswherename='po_DispatchFirst')droptabletempdb..po_DispatchFirstprint'发货'--取得发货单内容----2003.06.27增加两字段iTB,TBQuantity--2003.09.03再增加一字段TBNum--南京用友维护部丁德安--根据补丁增加字段ijcQuantityset@chrsql='SelectDispatchlist.DLIDasDLID,Dispatchlist.cDLCodeAScDLCode,Dispatchlist.cSTCodeAScSTCode,Dispatchlist.ddateASddate,Dispatchlist.cDepCodeascDepCode,Dispatchlist.cPersonCodeascPersonCode,Dispatchlist.cCusCodeascCusCode,Dispatchlist.iExchRateasiExchRate,Dispatchlist.bFirstasbFirst,Dispatchlist.cVerifierascVerifier,Dispatchlist.cMakerascMaker,Dispatchlists.iDlsidasiDlsid,Dispatchlists.cWhCodeascWHCode,Dispatchlists.cInvCodeascInvCode,Dispatchlists.iQuantityasiQuantity,Dispatchlists.iNumasiNum,Dispatchlists.iTaxUnitPriceasiTaxUnitPrice,Dispatchlists.iMoneyasiMoney,Dispatchlists.iTaxasiTax,Dispatchlists.iSumasiSum,Dispatchlists.iDisCountasiDisCount,Dispatchlists.iNatUnitPriceasiNatUnitPrice,Dispatchlists.iNatMoneyasiNatMoney,Dispatchlists.iNatTaxasiNatTax,Dispatchlists.iNatSumasiNatSum,Dispatchlists.iNatDisCountasiNatDisCount,Dispatchlists.cBatchascBatch,Dispatchlists.cFree1ascFree1,Dispatchlists.cFree2ascFree2,Dispatchlists.iTaxRateasiTaxRate,Dispatchlists.cDefine22ascDefine22,Dispatchlists.cDefine23ascDefine23,Dispatchlists.cDefine24ascDefine24,Dispatchlists.cDefine25ascDefine25,Dispatchlists.cDefine26ascDefine26,Dispatchlists.cDefine27ascDefine27,Dispatchlist.cVouchtypeascVouchtype,Dispatchlist.cDefine1ascDefine1,Dispatchlist.cDefine2ascDefine2,Dispatchlist.cDefine3ascDefine3,Dispatchlist.cDefine4ascDefine4,Dispatchlist.cDefine5ascDefine5,Dispatchlist.cDefine6ascDefine6,Dispatchlist.cDefine7ascDefine7,Dispatchlist.cDefine8ascDefine8,Dispatchlist.cDefine9ascDefine9,Dispatchlist.cDefine10ascDefine10,Dispatchlists.bSettleallasbsettleall,Dispatchlists.iSettleQuantityasiSettleQuantity,Dispatchlists.iSettleNumasiSettlenum,Dispatchlists.iTBasiTB,Dispatchlists.TBQuantityasTBQuantity,Dispatchlists.TBNumasTBNum,Dispatchlists.iUnitPrice,isnull(iquantity,0)-isnull(iquantity,0)asijcQuantityINTOtempdb..po_DispatchFirstFromDispatchlistsinnerjoinDispatchlistOnDispatchLists.DLID=Dispatchlist.DLIDWHERE(Dispatchlist.bFirst=1or'+@chrstartdate1+')'--追加单据类型条件ifnot(@chrVouchtypeisnull)andltrim(rtrim(@chrVouchType))''set@chrsql=@chrsql+'and'+@chrVouchtypeifnot(@chrOutDateisnull)andltrim(rtrim(@chrOutDate))''set@chrsql=@chrsql+'and'+@chrOutDateifnot(@chrwhereisnull)andltrim(rtrim(@chrwhere))''set@chrsql=@chrsql+'and'+@chrWhereexec(@chrsql)-------------------------------------------------------------------------------------------------------------期初发货单去掉上年已经结算的数据(补丁)set@chrsql='updatetempdb..po_DispatchFirstsetijcQuantity=isnull(iSettleQuantity,0)-isnull((selectsum(iQuantity)fromSalebillvouchsinnerjoinsalebillvouchonsalebillvouchs.sbvid=salebillvouch.sbvidwheresalebillvouchs.idlsid=tempdb..po_DispatchFirst.idlsidandisnull(Salebillvouch.cInvalider,'''')=''''),0)wheretempdb..po_DispatchFirst.bfirst=1'exec(@chrsql)--byzzgset@chrsql='updatetempdb..po_DispatchFirstsetijcQuantity=iQuantitywhereiQuantity*(iQuantity-ijcQuantity)发货数量时数据不显示,故注释掉下行语句--exec(@chrsql)--byzzgset@chrsql='updatetempdb..po_DispatchFirstsetiQuantity=iQuantity-ijcQuantity,iNum=convert(decimal(20,2),iNum*(iQuantity-ijcQuantity)/iQuantity),iMoney=convert(decimal(20,2),iMoney*(iQuantity-ijcQuantity)/iQuantity),iTax=convert(decimal(20,2),iTax*(iQuantity-ijcQuantity)/iQuantity),iSum=convert(decimal(20,2),iMoney*(iQuantity-ijcQuantity)/iQuantity)+convert(decimal(20,2),iTax*(iQuantity-ijcQuantity)/iQuantity),iDiscount=convert(decimal(20,2),iDiscount*(iQuantity-ijcQuantity)/iQuantity),iNatMoney=convert(decimal(20,2),iNatMoney*(iQuantity-ijcQuantity)/iQuantity),iNatTax=convert(decimal(20,2),iNatTax*(iQuantity-ijcQuantity)/iQuantity),iNatSum=convert(decimal(20,2),iNatMoney*(iQuantity-ijcQuantity)/iQuantity)+convert(decimal(20,2),iNatTax*(iQuantity-ijcQuantity)/iQuantity),iNatDiscount=convert(decimal(20,2),iNatDiscount*(iQuantity-ijcQuantity)/iQuantity)whereijcQuantity0andiQuantity0'exec(@chrsql)set@chrsql='createindexix_idlsidontempdb..po_dispatchfirst(idlsid)'exec(@chrsql)-------------------------------------------------------------------------------------------------------------取得发票内容,发票按发货单子表ID汇总--print'开票'ifexists(select*fromtempdb..sysobjectswherename='po_SaleBillFirst')droptabletempdb..po_salebillfirst--考虑退补问题--2003.09.03增加三字段iTB,TBQuantity,TBNum--南京用友维护部丁德安set@chrsql='SelectSaleBillVouchs.iDLSIDasiDLSID,SaleBillVouchs.iQuantityasiQuantity,SaleBillVouchs.iNumasiNum,SaleBillVouchs.iMoneyasiMoney,SaleBillVouchs.iSumasiSum,SaleBillVouchs.iTaxasiTax,SaleBillVouchs.iNatMoneyasiNatMoney,SaleBillVouchs.iNatSumasiNatSum,SaleBillVouchs.iNatTaxasiNatTax,SaleBill。
|
|