@Override public void updatePrices(final I_C_InvoiceLine invoiceLine) { // Product was not set yet. There is no point to calculate the prices if (invoiceLine.getM_Product_ID() <= 0) { return; } // // Calculate Pricing Result final IEditablePricingContext pricingCtx = createPricingContext(invoiceLine); final boolean usePriceUOM = InterfaceWrapperHelper.isNew(invoiceLine); pricingCtx.setConvertPriceToContextUOM(!usePriceUOM); pricingCtx.setManualPrice(invoiceLine.isManualPrice()); if (pricingCtx.isManualPrice()) { // Task 08908: do not calculate the prices in case the price is manually set return; } final IPricingResult pricingResult = Services.get(IPricingBL.class).calculatePrice(pricingCtx); if (!pricingResult.isCalculated()) { throw new ProductNotOnPriceListException(pricingCtx, invoiceLine.getLine()); } // // PriceList final BigDecimal priceList = pricingResult.getPriceList(); invoiceLine.setPriceList(priceList); invoiceLine.setPriceLimit(pricingResult.getPriceLimit()); invoiceLine.setPrice_UOM_ID(pricingResult.getPrice_UOM_ID()); invoiceLine.setPriceEntered(pricingResult.getPriceStd()); invoiceLine.setPriceActual(pricingResult.getPriceStd()); // // Discount invoiceLine.setDiscount(pricingResult.getDiscount()); // // Calculate PriceActual from PriceEntered and Discount calculatePriceActual(invoiceLine, pricingResult.getPrecision()); invoiceLine.setPrice_UOM_ID(pricingResult.getPrice_UOM_ID()); // }