采购订单自动带出单价99号工程师黄忠伟客户问题,890;采购管理设置订单取价方式为取自供应商存货价格表,客户一个供应商&存货有多个价格记录,修改了一个调价单,将启用日期变为最新的,价格设置最新的,但是取的价格并不是最新的价格;具体如下:先看选项供应商存货价格表和供应商存货调价单列表,第一条是最新的价格;但是采购订单取价的结果却是:测试,如果增加新的调价单,只要启用日期小于订单日期,那么订单的价格就取新增加的调价单的价格;一、增加生效日期为2010-4-3的;二、增加生效日期为2009-12-1的;二、增加生效日期为2010-4-14的;为什么会出现这种情况呢?跟踪一下吧;发现其中一条语句是取价格的;语句如下:selectTOP1autoidasid,cvencode,cinvcode,dEnableDate,dDisableDate,bPromotion,cExch_Name,iSupplyType,bTaxCost,cMemo,cTermCode,iLowerLimit,iUpperLimit,iTaxRate,iTaxUnitPrice,iUnitPricefromven_inv_pricewherecvencode=N'e'andcinvcode=N'e'andiSupplyType=1anddEnableDate<=N'2010-04-13'and((dDisableDateisnull)or(dDisableDate>'2010-04-13'))andiLowerLimit<=1and1=1andcExch_Name=N'人民币'orderbybPromotionDESC,iLowerLimitDESC,idDESC分析语句是取生效日期小于2010-4-13(即订单日期)且失效日期为空或者失效日期大于2010-4-13的记录,并将记录按促销价、数量下限、ID降序排列,取第一个记录的值;ID即是autoid因促销价、数量下限本例一样,那么按ID降序排列,取第一个记录的值就是ID等于6的,也就是价格表中的第六行的价格的记录的值;事实确实如此;知道原因了,如何解决呢,可以参照如下方案:1、增加新的调价单录入新的价格,因为ID号最大,因此取的就是新的价格;2、将其他不需要的价格记录删除或者设置失效日期等于或者小于最新价格记录的生效日期;这样的话满足条件的就只有这条记录;因为实际业务中不太可能存在同一供应商&存货相同条件有多种生效区间相同的价格记录,一般是客户操作不规范造成的;其他版本未测试,不知是否存在同样的情况;