|
问题现象:在用友U8erp系统中用友U8版本号:U8软件的供应链产品线存货核算模块出现如下问题:U821在数据精度定义中设置存货数量小数位为6位,销售系统中的委托代销统计表统计出来的发货数量、结算数量、结存数量虽显示为6位小数但全被四舍五入为4位有效位数,并且当选择了起始日期、结束日期与未选择时查询出来的结果不一致。请帮忙解答!
原因分析:Sa_MoveTrustDetail存储过程未考虑小数位数的问题,当查询条件不同时发货数量、结算数量、结存数量的字段有时被定义为Money型,有时被定义为Float型,当被定义为Money型时则查询结果的有效位数为4位,故有上述结果。
解决方案:在用友erp 系统版本U8软件中修改Sa_MoveTrustDetail存储过程如下,即可解决问题:IFEXISTS(SELECT*FROMsysobjectsWHEREname='Sa_MoveTrustDetail'andtype='P')DROPPROCEDURESa_MoveTrustDetailGO/*改正当数据精度设置中存货数量小数位大于4位时委托代销统计表发货数量、结算数量、结存数量只显示4位的问题2003.06.13南京用友维护部丁德安*/CREATEPROCEDURESa_MoveTrustDetail@chrTableNamevarchar(255)=null,@chrWhere1varchar(255)=null,@chrStartDatevarchar(30)=null,@chrEndDatevarchar(30)=nullASdeclare@chrSQLvarchar(4000)declare@chrWherevarchar(4000)/*取得超长参数方法*/ifltrim(rtrim(@chrWhere1))='newReport_ParameterFromTempTable'begin--从临时表中取得超长参数为了解决SQLSERVER7.0中的问题set@chrWhere=(selectnamefromtempdb..newReportParameter)endelsebeginset@chrWhere=@chrWhere1end/*取得需要处理的最小数据集合*//*取委托代销发货数据*/ifexists(selectnamefromtempdb..sysobjectswherename='tmp_saletrust')droptabletempdb..tmp_saletrustset@chrSQL='Selectddate,autoid,iQuantity,iNum,iMoney,iTax,iSum,iDisCount,iNatMoney,iNatTax,iNatSum,iNatDisCountintotempdb..tmp_saletrustfromEndispatchsInnerjoinEndispatchOnEnDispatchs.EDID=Endispatch.EDID'ifltrim(rtrim(@chrWhere))=''or@chrWhereisnullbegin/*设置日期条件*/ifrtrim(ltrim(@chrEndDate))''andnot(@chrEndDateisnull)set@chrSQL=@chrSQL+'Whereddate''andnot(@chrEndDateisnull)set@chrSQL=@chrSQL+'andddate''andnot(@chrWhereisnull)set@chrSQL=@chrSQL+'and'+@chrWhereifrtrim(ltrim(@chrEndDate))''andnot(@chrEndDateisnull)set@chrSQL=@chrSQL+'andddate''andnot(@chrStartDateisnull)begin/*期初发货*/Selectautoid,dDate,iQuantityasqc_iQuantity,iNumasqc_iNum,iMoneyasqc_iMoney,iTaxasqc_iTax,iSumasqc_iSum,iDiscountasqc_iDiscount,iNatMoneyasqc_iNatMoney,iNatTaxasqc_iNatTax,iNatSumasqc_iNatSum,iNatDiscountasqc_iNatDiscount,iQuantity-iQuantityasfh_iQuantity,iNum-iNumasfh_iNum,iMoney-iMoneyasfh_iMoney,iTax-iTaxasfh_iTax,iSum-iSumasfh_iSum,iDiscount-iDiscountasfh_iDiscount,iNatMoney-iNatMoneyasfh_iNatMoney,iNatTax-iNatTaxasfh_iNatTax,iNatSum-iNatSumasfh_iNatSum,iNatDiscount-iNatDiscountasfh_iNatDiscount,iQuantity-iQuantityasjs_iQuantity,iNum-iNumasjs_iNum,iMoney-iMoneyasjs_iMoney,iTax-iTaxasjs_iTax,iSum-iSumasjs_iSum,iDiscount-iDiscountasjs_iDiscount,iNatMoney-iNatMoneyasjs_iNatMoney,iNatTax-iNatTaxasjs_iNatTax,iNatSum-iNatSumasjs_iNatSum,iNatDiscount-iNatDiscountasjs_iNatDiscount,iQuantity-iQuantityaswj_iQuantity,iNum-iNumaswj_iNum,iMoney-iMoneyaswj_iMoney,iTax-iTaxaswj_iTax,iSum-iSumaswj_iSum,iDiscount-iDiscountaswj_iDiscount,iNatMoney-iNatMoneyaswj_iNatMoney,iNatTax-iNatTaxaswj_iNatTax,iNatSum-iNatSumaswj_iNatSum,iNatDiscount-iNatDiscountaswj_iNatDiscountintotempdb..tmp_trustDetailfromtempdb..tmp_saletrustwheredDate=@chrStartDateend/*计算本期结算*/ifrtrim(ltrim(@chrStartDate))=''or@chrStartDateisnullbegin/*没有输入期初日期的情况*/insertintotempdb..tmp_trustDetailSelectautoid,dDate,0asqc_iQuantity,0asqc_iN。
|
|