2020-09-29 20:05发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个产品的价格行中有6个小数... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个产品的价格行中有6个小数位。 一旦我评估了晋升,就算术例外。 请确认是否还有其他方法可以计算小数点后6位的促销。 促销活动已正确应用,价格小数点后两位。
请告诉我们它是否有错误或存在任何解决方法。
亲爱的查尔斯,
我检查并比较了6.1和6.2之间的代码库,发现以下分析。
在AbstractCommerceRAOAction类第226行中创建createOrderEntryConsumedRAO()时获取了异常
**受保护的OrderEntryConsumedRAO createOrderEntryConsumedRAO(OrderEntryRAO orderEntryRAO,整数数量,BigDecimal折扣值) { OrderEntryConsumedRAO orderEntryConsumed = new OrderEntryConsumedRAO();//221 orderEntryConsumed.setOrderEntry(orderEntryRAO);//222 orderEntryConsumed.setQuantity(quantity);//223 BigDecimal basePrice = orderEntryRAO.getBasePrice();//225 BigDecimal调整后的UnitPrice = basePrice.subtract(discountValue).setScale(2);//226 orderEntryConsumed.setAdjustedUnitPrice(adjustedUnitPrice);//228 return orderEntryConsumed;//230 } **
类似地,在6.2代码库中,不赞成使用该方法,而是从AbstractRuleExecutableSupport类使用createOrderEntryConsumedRAO()方法。 在这里,如果我们看到方法createOrderEntryConsumedRAO()依次调用getOrderUtils()。applyRounding(),则舍入处理如下。
受保护的OrderEntryConsumedRAO createOrderEntryConsumedRAO(OrderEntryRAO orderEntryRAO,整数数量,BigDecimal折扣值){OrderEntryConsumedRAO orderEntryConsumed = new OrderEntryConsumedRAO(); orderEntryConsumed.setOrderEntry(orderEntryRAO); orderEntryConsumed.setQuantity(quantity); BigDecimal basePrice = orderEntryRAO.getBasePrice(); BigDecimal AdjustedUnitPrice = basePrice.subtract(discountValue); BigDecimal roundedAdjustedUnitPrice = this.getOrderUtils().applyRounding(adjustedUnitPrice,orderEntryRAO.getCurrencyIsoCode()); orderEntryConsumed.setAdjustedUnitPrice(roundedAdjustedUnitPrice); 返回orderEntryConsumed; }
OrderUtils
public BigDecimal applyRounding(BigDecimal price,String currencyIsoCode){ BigDecimal roundedPrice = null; 如果(Objects.nonNull(price)){ 可选比例= this.getDigitsOfCurrency(currencyIsoCode); roundedPrice =(BigDecimal)scale.map((d)-> { 返回price.setScale(d.intValue(),RoundingMode.HALF_EVEN); })。orElse(price); } 返回roundedPrice; }
请确认分析是否正确,并且6.1中的提升将对舍入产生影响。
最多设置5个标签!
亲爱的查尔斯,
我检查并比较了6.1和6.2之间的代码库,发现以下分析。
在AbstractCommerceRAOAction类第226行中创建createOrderEntryConsumedRAO()时获取了异常
类似地,在6.2代码库中,不赞成使用该方法,而是从AbstractRuleExecutableSupport类使用createOrderEntryConsumedRAO()方法。 在这里,如果我们看到方法createOrderEntryConsumedRAO()依次调用getOrderUtils()。applyRounding(),则舍入处理如下。
受保护的OrderEntryConsumedRAO createOrderEntryConsumedRAO(OrderEntryRAO orderEntryRAO,整数数量,BigDecimal折扣值){OrderEntryConsumedRAO orderEntryConsumed = new OrderEntryConsumedRAO(); orderEntryConsumed.setOrderEntry(orderEntryRAO); orderEntryConsumed.setQuantity(quantity); BigDecimal basePrice = orderEntryRAO.getBasePrice(); BigDecimal AdjustedUnitPrice = basePrice.subtract(discountValue); BigDecimal roundedAdjustedUnitPrice = this.getOrderUtils().applyRounding(adjustedUnitPrice,orderEntryRAO.getCurrencyIsoCode()); orderEntryConsumed.setAdjustedUnitPrice(roundedAdjustedUnitPrice); 返回orderEntryConsumed; }
OrderUtils
请确认分析是否正确,并且6.1中的提升将对舍入产生影响。
一周热门 更多>